Skip to main content
Glama
markuskreitzer

PicoScope MCP Server

PicoScope MCP Server

License: GPL v3 Python 3.11+ FastMCP

A STDIO MCP server that enables LLMs like Claude to interact with PicoScope oscilloscopes for signal acquisition, measurement, and analysis. Built with FastMCP and the official PicoSDK Python bindings.

Features

  • Device Management: Auto-discover and connect to PicoScope devices

  • Channel Configuration: Set voltage ranges, coupling, and offsets

  • Data Acquisition: Block capture and streaming modes

  • Triggering: Simple and advanced trigger configurations

  • Measurements: Frequency, amplitude, rise time, FFT, THD, and more

  • Signal Generation: Control built-in arbitrary waveform generator

  • AI-Native: Designed for natural language control via Claude and other LLMs

Related MCP server: LeCroy Oscilloscope MCP

Quick Start

# Clone the repository
git clone https://github.com/markuskreitzer/picoscope_mcp.git
cd picoscope_mcp

# Install dependencies (requires uv package manager)
uv sync

# Run the MCP server
uv run picoscope-mcp

The server runs in STDIO mode and is ready to communicate with MCP clients like Claude Desktop.

Installation

Prerequisites

  1. PicoSDK C Libraries (required for hardware operation)

    • Windows: Download from PicoTech Downloads

    • macOS: Download PicoScope software package

    • Linux: Install via package manager:

      # Ubuntu/Debian
      sudo apt-get install libps5000a libps4000a libps3000a libps2000a
  2. Python 3.11+ with uv package manager

Install Dependencies

# Clone or navigate to the project directory
cd picoscope_mcp

# Install dependencies
uv sync

Usage

Running the Server

uv run picoscope-mcp

The server runs in STDIO mode, communicating via standard input/output for use with MCP-compatible clients.

Using with Claude Desktop

Add this configuration to your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "picoscope": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/picoscope_mcp",
        "run",
        "picoscope-mcp"
      ]
    }
  }
}

Restart Claude Desktop, and you'll see the PicoScope tools available in the MCP menu.

Testing Without Hardware

The server will run even without PicoScope hardware connected, though device operations will fail until:

  1. PicoSDK C libraries are installed

  2. A PicoScope device is connected

MCP Tools

Discovery & Connection

Tool

Description

list_devices

Find all connected PicoScope devices

connect_device

Connect to a specific device (by serial) or first available

get_device_info

Get details about connected device

disconnect_device

Disconnect from current device

Channel Configuration

Tool

Description

configure_channel

Set channel parameters (range, coupling, offset)

get_channel_config

Query current channel settings

set_timebase

Configure sampling rate (informational)

Triggering

Tool

Description

set_simple_trigger

Configure edge trigger (rising/falling/both)

Data Acquisition

Tool

Description

capture_block

Single snapshot capture with pre/post trigger samples

start_streaming

Begin continuous data capture

stop_streaming

End streaming mode

get_streaming_data

Retrieve latest streaming data

Analysis

Tool

Description

measure_frequency

Calculate signal frequency

measure_amplitude

Measure voltage (pk-pk, RMS, etc.)

measure_rise_time

Edge timing analysis

measure_pulse_width

Pulse characteristics

compute_fft

Frequency domain analysis

get_statistics

Signal statistics (min/max/mean/std)

measure_thd

Total Harmonic Distortion

Advanced

Tool

Description

set_signal_generator

Configure AWG output

stop_signal_generator

Disable signal generator

configure_math_channel

Channel operations (A+B, A-B, etc.)

export_waveform

Save data to file (CSV/JSON/NumPy)

configure_downsampling

Set downsampling mode

Example Usage with Claude

User: "Connect to the first PicoScope and measure the frequency on channel A"

Claude calls:
1. list_devices() -> finds available devices
2. connect_device() -> connects to first device
3. configure_channel(channel="A", enabled=true, voltage_range=5.0) -> enables channel A
4. set_simple_trigger(source="A", threshold_mv=0) -> sets auto-trigger
5. capture_block(pre_trigger_samples=1000, post_trigger_samples=1000) -> captures waveform
6. Returns captured data with time and voltage values

User can then analyze the returned data for frequency, or request additional captures.

Configuration

Typical Workflow

  1. Connect: connect_device()

  2. Configure Channels: configure_channel() for each channel

  3. Set Trigger: set_simple_trigger()

  4. Capture: capture_block() or start_streaming()

  5. Analyze: Use measurement tools on captured data

Supported Hardware

  • PS5000A Series (primary support)

  • PS2000/3000/4000/6000 Series (planned)

Currently optimized for PS5000A. Other series will require device-specific implementations.

Development

Project Structure

picoscope_mcp/
├── src/picoscope_mcp/
│   ├── server.py          # FastMCP server
│   ├── device_manager.py  # Device abstraction
│   ├── models.py          # Data structures
│   ├── utils.py           # Helper functions
│   └── tools/             # MCP tool implementations
│       ├── discovery.py
│       ├── configuration.py
│       ├── acquisition.py
│       ├── analysis.py
│       └── advanced.py
└── tests/
    └── test_tools.py

Running Tests

uv run pytest

Adding Support for New Device Series

  1. Update device_manager.py to detect device series

  2. Import appropriate picosdk module (e.g., ps3000a)

  3. Map device-specific constants and API calls

  4. Handle series-specific capabilities

Troubleshooting

"PicoSDK not found" Error

Install PicoSDK C libraries for your platform (see Prerequisites).

"No device connected" Errors

  1. Ensure PicoScope is connected via USB

  2. Check device appears in system (Windows Device Manager, macOS System Information, Linux lsusb)

  3. Verify PicoSDK drivers are installed

  4. Try reconnecting the device

Channel Configuration Fails

  • Check voltage range is supported: 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 20V

  • Verify channel exists (A-D for 4-channel models)

Capture Timeout

  • Ensure trigger settings are appropriate for signal

  • Try increasing auto-trigger timeout

  • Check signal is within configured voltage range

Roadmap

  • Phase 1: Foundation - Device discovery, connection, PS5000A support

  • Phase 2: Advanced acquisition - Streaming mode, advanced triggers

  • Phase 3: Multi-device support - PS2000/3000/4000/6000 series

  • Phase 4: Enhanced analysis - Real-time FFT, automated characterization

  • Phase 5: Visualization - Web dashboard for waveform viewing

See PROJECT_PLAN.md for detailed architecture and development plans.

Contributing

Contributions are welcome! This project is in active development.

How to Contribute

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

Development Setup

# Clone your fork
git clone https://github.com/YOUR_USERNAME/picoscope_mcp.git
cd picoscope_mcp

# Install dependencies including dev tools
uv sync

# Run tests
uv run pytest

Areas for Contribution

  • Support for additional PicoScope series (PS2000, PS3000, PS4000, PS6000)

  • Streaming mode implementation

  • Advanced trigger modes (pulse width, window, logic)

  • Additional measurement algorithms

  • Documentation and examples

  • Test coverage

  • Bug reports and fixes

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

Note: This license allows commercial use but requires derivative works to remain open source under GPLv3.

Acknowledgments

References

Contact

Available Tools

24 tools
capture_blockB

Capture a single block of data.

Args: pre_trigger_samples: Number of samples before trigger. post_trigger_samples: Number of samples after trigger.

Returns: Dictionary containing captured waveform data for all enabled channels.

ParametersJSON Schema
NameRequiredDescriptionDefault
pre_trigger_samplesNo
post_trigger_samplesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'captures' data, implying a read operation, but doesn't disclose critical traits: whether it requires a trigger configuration, if it blocks execution until capture completes, what happens if no trigger occurs, or any rate/performance limits. The return format is mentioned but lacks detail on structure or units.

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 appropriately sized and front-loaded with the core purpose in the first sentence. The Args and Returns sections are structured but slightly verbose for a simple tool. Every sentence adds value, though the formatting could be more concise by integrating parameter explanations into the main description.

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

Completeness3/5

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

Given the tool's complexity (data capture with trigger-based timing), no annotations, and an output schema (implied by Returns statement), the description is minimally adequate. It covers purpose and parameters but lacks context on prerequisites, behavioral constraints, and integration with sibling tools like 'set_simple_trigger' or 'configure_channel', leaving gaps 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?

The description adds meaningful semantics beyond the input schema, which has 0% description coverage. It explains that 'pre_trigger_samples' and 'post_trigger_samples' define the data block around a trigger event, clarifying their role in capture timing. However, it doesn't specify valid ranges, units (e.g., samples vs. time), or interaction with other tools like 'set_simple_trigger'.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Capture a single block of data' with a specific verb ('capture') and resource ('block of data'). It distinguishes from siblings like 'get_streaming_data' (continuous) and 'export_waveform' (file output), but doesn't explicitly differentiate from measurement tools like 'measure_amplitude' or 'measure_frequency' that might also capture data.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., device connection, channel configuration), timing considerations (e.g., trigger setup), or when to choose this over siblings like 'get_streaming_data' for continuous acquisition or measurement tools for specific analyses.

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

compute_fftC

Compute FFT (Fast Fourier Transform) for frequency domain analysis.

Args: channel: Channel to analyze. window: Window function to apply.

Returns: Dictionary containing frequency bins and magnitude spectrum.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes
windowNohann

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral context. It mentions the tool returns a dictionary with frequency bins and magnitude spectrum, but doesn't disclose computational requirements, data size limitations, whether it processes real-time or stored data, or any performance characteristics.

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 efficiently structured with a brief purpose statement followed by Args and Returns sections. However, the 'Compute FFT (Fast Fourier Transform) for frequency domain analysis' sentence could be more specific about what data is being transformed.

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 an output schema (though not shown here), the description doesn't need to fully document return values. However, for a computational tool with no annotations and 0% schema description coverage, it should provide more context about data requirements, transformation specifics, and typical use cases to be complete.

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

Parameters3/5

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

Schema description coverage is 0%, but both parameters have enums that define valid values. The description adds minimal semantics by naming the parameters (channel, window) and stating their purpose ('Channel to analyze', 'Window function to apply'), but doesn't explain what the channel represents or how the window affects the analysis.

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

Purpose4/5

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

The description clearly states the tool computes FFT for frequency domain analysis, which is a specific verb (compute) and resource (FFT). However, it doesn't differentiate from sibling tools like measure_frequency or measure_thd, which might also perform frequency-related analyses.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites like needing connected devices or configured channels, nor does it explain how this differs from other frequency measurement tools in the sibling list.

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

configure_channelB

Configure a channel on the oscilloscope.

Args: channel: Channel identifier (A, B, C, or D). enabled: Whether the channel is enabled. coupling: AC or DC coupling. voltage_range: Voltage range in volts (e.g., 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 20). analog_offset: DC offset voltage in volts.

Returns: Dictionary containing configuration status and applied settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes
enabledNo
couplingNoDC
voltage_rangeNo
analog_offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool configures a channel, implying a write/mutation operation, but doesn't disclose critical traits like required permissions, whether changes are destructive or reversible, error conditions, or rate limits. The 'Returns' section hints at output but lacks behavioral context.

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

Conciseness4/5

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

The description is well-structured with a purpose statement, Args section, and Returns section. Every sentence earns its place by explaining parameters or output. It's appropriately sized for a 5-parameter tool, though the 'Returns' could be more concise given the output schema exists.

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

Completeness3/5

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

Given the tool's complexity (configuration/mutation), no annotations, and an output schema, the description is moderately complete. It explains parameters well but lacks behavioral context (e.g., side effects, errors). The output schema reduces the need to detail return values, but the description should address mutation implications more thoroughly.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It adds significant value by explaining all 5 parameters with clear semantics: channel identifiers, enabled state, coupling types, voltage range examples, and analog offset meaning. This goes beyond the bare schema, though it doesn't cover defaults or constraints like numeric ranges.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('configure') and resource ('a channel on the oscilloscope'). It distinguishes itself from siblings like 'get_channel_config' (which reads) and 'configure_math_channel' (which configures a different resource). However, it doesn't explicitly contrast with all configuration siblings like 'configure_downsampling' or 'set_timebase'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., device connection), exclusions, or compare with siblings like 'get_channel_config' for reading settings or 'configure_math_channel' for math channels. Usage is implied only by the tool name and description.

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

configure_downsamplingC

Configure downsampling for data acquisition.

Args: mode: Downsampling mode. ratio: Downsampling ratio (1 = no downsampling).

Returns: Dictionary containing downsampling configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNonone
ratioNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions 'configure' which implies a write/mutation operation, but doesn't disclose whether this requires specific device states (e.g., connected/streaming), whether changes are persistent, what permissions are needed, or any side effects. The description adds minimal behavioral context beyond the basic action.

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

Conciseness4/5

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

The description is appropriately sized with clear sections (purpose, args, returns). The purpose statement is front-loaded, and the parameter explanations are efficient. However, the 'Returns' section could be more informative given there's an output schema - it somewhat repeats what the structured data already provides.

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 a mutation tool with no annotations but with an output schema, the description is moderately complete. It explains the parameters adequately and mentions the return type. However, it lacks important context about prerequisites (e.g., device connection state), side effects, and how this configuration interacts with other tools like 'start_streaming' or 'get_streaming_data'.

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?

With 0% schema description coverage, the description compensates by explaining both parameters: 'mode' is described as 'Downsampling mode' and 'ratio' is explained with 'Downsampling ratio (1 = no downsampling)'. This adds meaningful semantics beyond the bare schema, though it doesn't detail what each enum value ('aggregate', 'decimate', etc.) actually means. For 2 parameters, this is reasonably helpful.

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

Purpose3/5

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

The description states 'Configure downsampling for data acquisition' which provides a basic purpose (configure downsampling) and context (data acquisition). However, it doesn't specify what exactly gets configured (which device/channel/system) or how it differs from sibling tools like 'configure_channel' or 'set_timebase'. The purpose is clear but lacks specificity about scope and differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'configure_channel', 'set_timebase', and 'get_streaming_data', there's no indication of whether this tool should be used before/after streaming, in conjunction with other configuration tools, or as a standalone operation. The agent must infer usage from the tool name alone.

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

configure_math_channelC

Configure a math channel (channel operations).

Args: operation: Mathematical operation to perform. channel_a: First channel. channel_b: Second channel.

Returns: Dictionary containing math channel configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationNoadd
channel_aNoA
channel_bNoB

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the tool configures something but doesn't disclose whether this is a read/write operation, if it requires device connection, what permissions are needed, or side effects like affecting streaming. 'Configure' implies mutation, but behavioral details like idempotency, error handling, or system impact are missing.

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

Conciseness4/5

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

The description is well-structured with a purpose statement followed by Args and Returns sections. It's front-loaded and uses bullet-like formatting efficiently. However, the 'Returns' section is somewhat redundant given the output schema, and the purpose statement could be more concise by integrating parameter hints.

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 3 parameters with enums but 0% schema coverage, an output schema exists, and no annotations, the description provides basic purpose and parameter labels. It covers the core action but lacks context on when/why to use it, behavioral risks, or detailed parameter semantics. For a configuration tool with mutation implied, this is minimally adequate but has clear gaps.

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

Parameters3/5

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

Schema description coverage is 0%, but the description lists parameters with brief labels ('Mathematical operation to perform', 'First channel', 'Second channel') that add basic meaning. However, it doesn't explain what 'channel' refers to (e.g., device channels), the enum values' significance, or how operations apply. With 3 parameters and no schema descriptions, this partially compensates but leaves gaps.

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

Purpose4/5

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

The description clearly states the tool's purpose as 'Configure a math channel (channel operations)' with specific verb ('configure') and resource ('math channel'), and mentions mathematical operations. It distinguishes from siblings like 'configure_channel' by specifying 'math channel' operations, though it doesn't explicitly contrast with 'configure_channel'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'configure_channel' or other configuration tools. It mentions 'channel operations' but gives no context about prerequisites, timing, or exclusions. The agent must infer usage from the name and parameters alone.

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

connect_deviceB

Connect to a specific PicoScope device.

Args: serial: Device serial number. If empty, connects to first available device.

Returns: Dictionary containing connection status and device information.

ParametersJSON Schema
NameRequiredDescriptionDefault
serialNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool connects a device and returns a dictionary with status and info, but lacks details on error handling (e.g., what happens if the serial is invalid), side effects (e.g., if it locks the device for exclusive use), or performance aspects (e.g., timeouts). This is inadequate for a tool that likely involves hardware interaction.

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

Conciseness5/5

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

The description is well-structured and concise. It starts with a clear purpose statement, followed by an 'Args' section explaining the parameter, and a 'Returns' section detailing the output. Every sentence adds value without redundancy, and it's front-loaded with the core functionality.

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 complexity (device connection tool with hardware interaction), no annotations, and an output schema (which covers return values), the description is minimally adequate. It explains the parameter and return format, but lacks behavioral details like error conditions or side effects. With output schema handling returns, it meets a baseline but could be more complete for such a critical operation.

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

Parameters4/5

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

The description adds meaningful semantics beyond the input schema. The schema has 0% description coverage and only defines 'serial' as a string with a default. The description explains that 'serial' is the device serial number and clarifies that an empty value connects to the first available device, which is crucial usage context not in the schema. With 1 parameter and low schema coverage, this compensates well.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Connect to a specific PicoScope device.' It specifies the verb ('connect') and resource ('PicoScope device'), making the action clear. However, it doesn't explicitly differentiate from sibling tools like 'list_devices' or 'disconnect_device', which would require a 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It mentions that an empty serial connects to the first available device, but doesn't explain when to use 'connect_device' over 'list_devices' (e.g., to check available devices first) or 'disconnect_device' (e.g., for cleanup). There's no context on prerequisites or typical workflows.

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

disconnect_deviceB

Disconnect from the currently connected PicoScope device.

Returns: Dictionary containing disconnection status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action and return format but doesn't address important behavioral aspects like whether disconnection is reversible, what happens to ongoing operations (e.g., streaming), permission requirements, or error conditions. The return format mention is helpful but insufficient for a mutation 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 appropriately brief with two sentences that efficiently convey the action and return format. It's front-loaded with the core purpose, though the second sentence about returns could be integrated more smoothly. No wasted words, but minor structural improvements are possible.

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 this is a mutation tool (disconnection) with no annotations but an output schema exists, the description provides basic purpose and return format. However, it lacks sufficient behavioral context for safe use (e.g., effects on other operations, error handling), making it minimally adequate but with clear gaps in completeness.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the lack of inputs. The description appropriately doesn't add parameter information, which is correct for a parameterless tool, earning a baseline score of 4.

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

Purpose4/5

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

The description clearly states the action ('Disconnect from') and resource ('currently connected PicoScope device'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'connect_device' beyond the obvious inverse relationship, which prevents a perfect score.

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 context through 'currently connected PicoScope device,' suggesting this tool should be used when a device is already connected. However, it doesn't provide explicit guidance on when to use this versus alternatives or mention any prerequisites or exclusions, leaving some ambiguity.

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

export_waveformC

Export captured waveform data to file.

Args: format: Export format (csv, json, or numpy). channels: List of channels to export. filename: Output filename (without extension).

Returns: Dictionary containing export status and file path.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNocsv
channelsNo
filenameNowaveform

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is an export operation (implying data output) but doesn't describe what happens to the original waveform data (preserved or consumed?), whether file creation requires specific permissions, or any rate limits/constraints. The return value format is mentioned but lacks detail on error conditions or response structure beyond the basic dictionary description.

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 efficiently structured with a clear purpose statement followed by organized sections for arguments and returns. Every sentence serves a functional purpose. While slightly longer than minimal, the structure enhances readability without unnecessary verbosity. The information is front-loaded with the core function stated first.

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 3 parameters with 0% schema coverage and no annotations, the description provides basic but incomplete context. The presence of an output schema means the description doesn't need to detail return values, but it should better address behavioral aspects and usage prerequisites. For a data export tool in an instrumentation context, more guidance about data availability and file system interactions would be valuable.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It provides basic semantic meaning for all three parameters: 'format' specifies export options, 'channels' indicates which data channels to include, and 'filename' defines the output name. However, it doesn't explain channel naming conventions, file location defaults, or format-specific behaviors. The description adds value beyond the bare schema but leaves important practical details unspecified.

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

Purpose4/5

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

The description clearly states the verb 'Export' and the resource 'captured waveform data to file', making the purpose immediately understandable. It distinguishes itself from siblings like 'capture_block' or 'get_streaming_data' by focusing on data export rather than acquisition or analysis. However, it doesn't explicitly differentiate from potential data export alternatives that might exist in the broader context.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether waveform data must be captured first using 'capture_block'), nor does it suggest when other export formats or methods might be preferable. The agent receives no contextual usage instructions beyond the basic function.

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

get_channel_configB

Get current configuration of a channel.

Args: channel: Channel identifier (A, B, C, or D).

Returns: Dictionary containing current channel settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a 'Get' operation, implying read-only behavior, but doesn't address permissions, error conditions, or whether it requires device connectivity (relevant given siblings like 'connect_device'). This leaves gaps in understanding the tool's operational context.

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

Conciseness5/5

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

The description is efficiently structured with a clear purpose statement followed by Args and Returns sections. Every sentence adds value without redundancy, making it easy to parse and understand quickly.

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

Completeness3/5

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

Given the tool's moderate complexity (single parameter, read operation) and the presence of an output schema (implied by 'Returns: Dictionary...'), the description is adequate but incomplete. It covers the basic purpose and parameter semantics but lacks usage guidelines and behavioral context, which are important for a tool in a device configuration ecosystem.

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

Parameters4/5

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

The description adds meaningful context beyond the schema: it explains that 'channel' is a 'Channel identifier' and lists the enum values (A, B, C, D) in the Args section. Since schema description coverage is 0%, this compensates well for the single parameter, though it doesn't elaborate on what these identifiers represent (e.g., physical channels).

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

Purpose4/5

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

The description clearly states the tool's purpose as 'Get current configuration of a channel,' which is a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'configure_channel' or 'get_device_info,' which could provide related configuration information.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'configure_channel' (for setting configuration) or 'get_device_info' (for broader device information), leaving the agent without context for tool selection.

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

get_device_infoA

Get detailed information about the currently connected device.

Returns: Dictionary containing device model, serial, variant, capabilities, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is a read operation ('Get') and describes the return format, which is helpful. However, it doesn't mention potential errors (e.g., if no device is connected), performance characteristics, or whether this requires specific permissions—leaving gaps for a mutation-free tool.

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

Conciseness5/5

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

The description is perfectly concise and well-structured: a single clear purpose statement followed by a brief returns section. Every sentence earns its place by providing essential information without redundancy or fluff, making it easy to scan and understand.

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

Completeness4/5

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

Given the tool's simplicity (no parameters, read-only operation) and the presence of an output schema (which handles return value documentation), the description is reasonably complete. It covers the core purpose and return format. However, it could be slightly more complete by mentioning error conditions or connection prerequisites.

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

Parameters4/5

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

The tool has zero parameters with 100% schema description coverage, so the schema already fully documents the input requirements. The description appropriately doesn't waste space discussing parameters, maintaining focus on what the tool does rather than how to call it. A baseline of 4 is appropriate for zero-parameter tools.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('detailed information about the currently connected device'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_devices' or 'get_channel_config', which would be needed for a perfect score.

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 context by specifying 'currently connected device', suggesting this tool should be used after establishing a connection. However, it doesn't provide explicit guidance on when to use this versus alternatives like 'list_devices' (which might show available devices) or mention prerequisites like needing to call 'connect_device' first.

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

get_statisticsB

Get statistical analysis of signal.

Args: channel: Channel to analyze. num_samples: Number of samples to analyze.

Returns: Dictionary containing min, max, mean, std dev, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes
num_samplesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden but lacks behavioral details. It doesn't mention whether this requires a connected device, if it's a read-only operation, what happens if invalid parameters are provided, or any rate limits. The mention of 'Returns' hints at output but doesn't fully describe behavior.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the core purpose, followed by clear sections for Args and Returns. Every sentence adds value with no wasted words, making it easy to scan and understand quickly.

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

Completeness3/5

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

Given the tool's moderate complexity (2 parameters, no annotations, output schema exists), the description is somewhat complete but has gaps. It covers purpose and parameters but lacks usage context and behavioral details. The output schema existence means return values don't need explanation, but other aspects like prerequisites are missing.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining 'channel' as 'Channel to analyze' and 'num_samples' as 'Number of samples to analyze', which clarifies their roles beyond the schema's enum and default values. However, it doesn't detail the enum options (A, B, C, D) or sample constraints.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Get statistical analysis') and resource ('of signal'), distinguishing it from measurement-focused siblings like measure_amplitude or measure_frequency. However, it doesn't explicitly differentiate from compute_fft, which might also analyze signals but differently.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like compute_fft or the various measurement tools. The description only states what it does, not when it's appropriate or what prerequisites might be needed (e.g., device connection).

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

get_streaming_dataC

Get latest streaming data.

Args: max_samples: Maximum number of samples to retrieve.

Returns: Dictionary containing latest streaming data for enabled channels.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_samplesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions retrieving 'latest streaming data' and 'for enabled channels', but lacks details on behavioral traits such as whether this is a read-only operation (implied by 'Get'), potential rate limits, data format, or if it requires an active streaming session. This leaves significant gaps for a tool that likely interacts with real-time data.

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 appropriately sized with a brief purpose statement followed by structured 'Args' and 'Returns' sections. It's front-loaded and efficient, with no wasted sentences, though the 'Returns' section could be more concise by integrating with the purpose statement.

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

Completeness3/5

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

Given the tool's complexity (likely real-time data retrieval), no annotations, and an output schema (implied by 'Returns' statement), the description is minimally adequate. It covers the basic purpose and parameter but lacks context on prerequisites, data format, or error handling, leaving gaps that could hinder effective use by an AI agent.

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

Parameters4/5

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

The description adds meaning beyond the input schema by explaining that 'max_samples' is the 'Maximum number of samples to retrieve', which clarifies its purpose. With 0% schema description coverage and only one parameter, this compensates well, though it doesn't detail constraints like valid ranges or units. The baseline is high due to low parameter count and coverage.

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

Purpose3/5

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

The description states the tool 'Get latest streaming data' which provides a clear verb ('Get') and resource ('streaming data'), but it's vague about what 'streaming data' entails and doesn't distinguish it from sibling tools like 'get_statistics' or 'export_waveform' that might also retrieve data. It specifies 'for enabled channels' which adds some context but remains general.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites like needing streaming to be active (implied by 'start_streaming' sibling) or when to choose this over tools like 'get_statistics' for processed data. There's no explicit when/when-not usage advice.

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

list_devicesB

List all connected PicoScope devices.

Returns: Dictionary containing list of discovered devices with their info.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool returns a dictionary with device info, which is helpful, but lacks details on critical behaviors: it doesn't specify if this is a read-only operation (implied by 'List' but not explicit), whether it performs network discovery or just lists already-connected devices, potential errors (e.g., no devices found), or performance considerations. The description adds some value but leaves significant gaps.

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 and well-structured: the first sentence states the purpose clearly, and the second sentence provides return value information. Both sentences earn their place by adding essential details. It could be slightly improved by front-loading the return info or combining sentences, but it's efficient with minimal waste.

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 low complexity (0 parameters, simple list operation) and the presence of an output schema (which covers return values), the description is reasonably complete. It states what the tool does and the return format. However, it could be more complete by addressing behavioral aspects like error handling or discovery mechanism, especially since no annotations are provided to fill those gaps.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description correctly doesn't discuss parameters, which is appropriate. It earns a baseline 4 because it doesn't add unnecessary param info, but loses a point as it doesn't explicitly note the lack of parameters, which could help the agent understand it's a simple, parameterless query.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'List all connected PicoScope devices.' It specifies the verb ('List') and resource ('connected PicoScope devices'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from siblings like 'get_device_info' or 'connect_device', which could provide similar device-related information.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether devices must be connected first), compare it to siblings like 'get_device_info' (which might retrieve info for a specific device), or specify scenarios where listing all devices is preferred over other operations. This lack of context leaves the agent without usage direction.

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

measure_amplitudeA

Measure signal amplitude on a channel.

Note: This requires a recent capture. Call capture_block first.

Args: channel: Channel to measure. measurement_type: Type of amplitude measurement.

Returns: Dictionary containing amplitude in volts and measurement type.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes
measurement_typeNopeak_to_peak

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/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 discloses the prerequisite of needing a recent capture, which is useful behavioral context. However, it lacks details on permissions, error handling, or rate limits, leaving gaps in transparency for a measurement tool.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, followed by a note on prerequisites and structured sections for Args and Returns. Each sentence earns its place without redundancy, making it efficient and well-organized.

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 moderate complexity, no annotations, and an output schema that covers return values, the description is mostly complete. It includes purpose, prerequisites, and parameter semantics, but could benefit from more behavioral details like error cases or performance considerations.

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

Parameters4/5

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

The schema description coverage is 0%, but the description compensates by explaining that 'channel' is the 'Channel to measure' and 'measurement_type' is the 'Type of amplitude measurement,' adding meaning beyond the enum values. However, it does not elaborate on the differences between measurement types like 'peak_to_peak' vs 'rms,' which could enhance usability.

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

Purpose4/5

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

The description clearly states the tool's purpose as 'Measure signal amplitude on a channel,' which is a specific verb+resource combination. However, it does not explicitly distinguish this tool from sibling measurement tools like measure_frequency or measure_thd, which reduces it from a perfect score.

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

Usage Guidelines4/5

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

The description provides explicit guidance to 'Call capture_block first' and notes that it 'requires a recent capture,' which clearly indicates a prerequisite and context for usage. However, it does not specify when to use this tool versus alternatives like measure_frequency or get_statistics, which prevents a score of 5.

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

measure_frequencyA

Measure signal frequency on a channel.

Note: This requires a recent capture. Call capture_block first.

Args: channel: Channel to measure.

Returns: Dictionary containing frequency in Hz and measurement details.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses the prerequisite of a recent capture, which is useful behavioral context. However, it lacks details on permissions, rate limits, error conditions, or what happens if no capture exists, leaving gaps in transparency.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the core purpose, followed by a note and parameter/return details. Every sentence adds value without redundancy, making it efficient and easy to parse.

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 moderate complexity, no annotations, and an output schema (implied by 'Returns'), the description is fairly complete. It covers purpose, prerequisites, parameters, and returns, but could improve by addressing error cases or linking to sibling tools more explicitly.

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

Parameters4/5

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

The schema has 0% description coverage, but the description compensates by explaining that 'channel' is the 'Channel to measure' and lists the return structure. This adds meaningful context beyond the enum values in the schema, though it could elaborate on channel semantics (e.g., what A-D represent).

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

Purpose4/5

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

The description clearly states the action ('measure signal frequency') and resource ('on a channel'), making the purpose evident. However, it doesn't explicitly differentiate from sibling measurement tools like measure_amplitude or measure_pulse_width, which prevents a perfect score.

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

Usage Guidelines4/5

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

The description provides explicit guidance to 'call capture_block first' as a prerequisite, which is helpful. It doesn't specify when to use this tool over alternatives like compute_fft or other measurement tools, so it's not fully comprehensive.

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

measure_pulse_widthC

Measure pulse width at specified threshold.

Args: channel: Channel to measure. threshold_percent: Threshold percentage for pulse measurement (0-100).

Returns: Dictionary containing pulse width in seconds.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes
threshold_percentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states the tool measures pulse width but does not disclose behavioral traits such as required device state (e.g., connected device, active signal), measurement accuracy, error conditions, or side effects. The description is minimal and lacks operational context.

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 appropriately sized and front-loaded with the core purpose. The Args and Returns sections are structured, but the 'Returns' sentence could be more concise. Overall, it avoids unnecessary verbosity while maintaining clarity.

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 no annotations, 0% schema coverage, and an output schema (implied by 'Returns'), the description is moderately complete. It covers the basic purpose and parameters but lacks context on device state, measurement specifics, and integration with sibling tools. The output schema handles return values, but operational details are missing.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining 'channel' as 'Channel to measure' and 'threshold_percent' as 'Threshold percentage for pulse measurement (0-100)', which clarifies the purpose beyond the schema's enum and numeric types. However, it does not detail how threshold affects measurement or channel options, leaving some gaps.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Measure pulse width at specified threshold.' It specifies the verb ('measure') and resource ('pulse width'), distinguishing it from siblings like measure_frequency or measure_amplitude. However, it does not explicitly differentiate from similar measurement tools beyond the specific measurement type.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, context (e.g., after configuring a channel), or exclusions. Given siblings like measure_amplitude and measure_frequency, there is no explicit comparison or usage context provided.

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

measure_rise_timeA

Measure signal rise time (10% to 90% by default).

Args: channel: Channel to measure. low_threshold_percent: Lower threshold percentage (0-100). high_threshold_percent: Upper threshold percentage (0-100).

Returns: Dictionary containing rise time in seconds.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes
low_threshold_percentNo
high_threshold_percentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the default thresholds but doesn't describe what happens during measurement (e.g., whether it samples live data, uses buffered data, or requires specific signal characteristics), what errors might occur, or any performance considerations. The description is minimal beyond the basic operation.

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

Conciseness5/5

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

The description is efficiently structured with a clear opening sentence stating the purpose, followed by well-organized sections for Args and Returns. Every sentence adds value without redundancy, and the information is front-loaded with the core functionality stated first.

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 moderate complexity (3 parameters, no annotations, but with an output schema), the description is reasonably complete. It covers the purpose, parameters, and return value. The output schema exists, so the description doesn't need to detail the return structure. However, it lacks context about when to use the tool and behavioral details, which keeps it from being fully comprehensive.

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?

With 0% schema description coverage, the description compensates well by explaining all three parameters in the Args section. It clarifies that 'channel' selects which channel to measure, and both threshold parameters are percentages (0-100) with their roles (lower/upper). The default values (10% and 90%) are implied in the opening sentence but not explicitly stated in the parameter 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's purpose with a specific verb ('measure') and resource ('signal rise time'), including the default measurement range (10% to 90%). It distinguishes itself from sibling tools like 'measure_amplitude' or 'measure_frequency' by focusing specifically on rise time measurement.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. While it mentions the default thresholds, it doesn't explain when rise time measurement is appropriate compared to other measurement tools (like amplitude or frequency) or what prerequisites might be needed (e.g., whether a signal must be actively streaming or captured first).

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

measure_thdC

Measure Total Harmonic Distortion (THD).

Args: channel: Channel to measure.

Returns: Dictionary containing THD percentage and harmonic components.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions what the tool does and the return format but omits critical details like whether this is a read-only operation, if it requires specific device states, potential side effects, or error conditions. This is inadequate for a tool with no annotation coverage.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded, with the main purpose stated first followed by brief parameter and return details. However, the 'Args:' and 'Returns:' sections are somewhat redundant given the structured fields, slightly reducing efficiency.

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

Completeness3/5

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

Given the tool's moderate complexity (a measurement operation with one parameter), no annotations, and an output schema that covers return values, the description is minimally adequate. It explains the purpose and return structure but lacks context on usage, prerequisites, and behavioral traits, leaving gaps for the agent.

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

Parameters3/5

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

The description adds minimal value beyond the input schema. It states that 'channel' is the channel to measure, which is implied by the schema's enum values (A, B, C, D). With 0% schema description coverage, the description doesn't compensate by explaining channel semantics or measurement context, meeting only the baseline expectation.

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

Purpose4/5

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

The description clearly states the verb ('Measure') and resource ('Total Harmonic Distortion (THD)'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling measurement tools like measure_amplitude or measure_frequency, which prevents a perfect score.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description lacks context about prerequisites (e.g., whether a device must be connected or configured first) or comparisons with other measurement tools, leaving the agent to infer usage.

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

set_signal_generatorB

Configure the built-in signal generator (AWG).

Args: waveform_type: Type of waveform to generate. frequency_hz: Frequency in Hz. amplitude_mv: Peak-to-peak amplitude in millivolts. offset_mv: DC offset in millivolts.

Returns: Dictionary containing signal generator status and configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
waveform_typeNosine
frequency_hzNo
amplitude_mvNo
offset_mvNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Configure' implies a write operation, the description doesn't mention whether this requires specific device states, what happens to existing configurations, whether changes are immediate or require additional steps, or any error conditions. The return statement mentions a status dictionary but doesn't explain what it contains or how to interpret it.

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

Conciseness5/5

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

The description is efficiently structured with a clear purpose statement followed by well-organized parameter and return sections. Every sentence adds value without redundancy. The Args/Returns formatting helps readability while maintaining brevity.

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

Completeness3/5

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

Given the complexity of configuring a signal generator with 4 parameters and no annotations, the description is minimally adequate. It explains what parameters do but lacks behavioral context about device state requirements, error conditions, or practical usage patterns. The presence of an output schema means the description doesn't need to detail return values, but it should provide more operational guidance for this write operation.

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

Parameters4/5

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

The description provides clear semantic explanations for all four parameters beyond what the schema offers. The schema has 0% description coverage (only technical types and defaults), but the description adds meaningful context: 'waveform_type: Type of waveform to generate', 'frequency_hz: Frequency in Hz', etc. This compensates well for the schema's lack of descriptions, though it doesn't explain parameter interactions or constraints.

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

Purpose4/5

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

The description clearly states the verb ('Configure') and resource ('built-in signal generator (AWG)'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'stop_signal_generator' or explain how this configuration differs from other configuration tools like 'configure_channel' or 'set_timebase'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. There's no mention of prerequisites (e.g., device connection), when this should be used instead of other configuration tools, or what happens if the signal generator is already running. The sibling tool list includes related tools like 'stop_signal_generator', but the description doesn't reference them.

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

set_simple_triggerA

Set up a simple edge trigger.

Args: source: Trigger source channel or external. threshold_mv: Trigger threshold in millivolts. direction: Trigger on rising, falling, or either edge. auto_trigger_ms: Auto-trigger timeout in milliseconds (0 = disabled).

Returns: Dictionary containing trigger configuration status.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYes
threshold_mvYes
directionNoRising
auto_trigger_msNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions the tool sets up a trigger and returns a status dictionary, but lacks critical behavioral details: whether this is a read/write operation, if it requires specific device states, potential side effects (e.g., interrupting streaming), or error conditions. The description is minimal and doesn't compensate for the absence of annotations.

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

Conciseness5/5

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

The description is well-structured and concise. It starts with a purpose statement, followed by a bulleted 'Args' section with clear explanations, and ends with return information. Every sentence earns its place, with no redundant or vague language, making it easy to parse quickly.

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 complexity (a configuration tool with 4 parameters), no annotations, and an output schema (implied by 'Returns'), the description is reasonably complete. It explains all parameters thoroughly and notes the return format. However, it lacks context on integration with sibling tools (e.g., how triggering relates to 'capture_block'), slightly reducing completeness for an agent operating in this domain.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully explain parameters. It does so effectively: each parameter is listed with clear semantics (e.g., 'threshold_mv: Trigger threshold in millivolts'), including units and practical meaning. This adds significant value beyond the bare schema, which only provides enums and types without context.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Set up a simple edge trigger.' It specifies the action (set up) and resource (edge trigger), distinguishing it from siblings like 'configure_channel' or 'set_signal_generator' which handle different configurations. However, it doesn't explicitly differentiate from potential similar tools (none listed), keeping it at 4 rather than 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., device connection), exclusions, or context for edge triggering relative to other operations like 'capture_block' or 'start_streaming'. This lack of usage context leaves the agent without clear decision-making criteria.

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

set_timebaseA

Set the timebase (sampling rate) for data acquisition.

Note: The actual timebase is determined during block capture based on the requested number of samples. This tool is informational.

Args: sample_interval_ns: Desired sample interval in nanoseconds. num_samples: Number of samples to capture.

Returns: Dictionary containing timebase information.

ParametersJSON Schema
NameRequiredDescriptionDefault
sample_interval_nsYes
num_samplesYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the tool is 'informational' and that timebase is 'determined during block capture,' which hints at non-destructive, read-like behavior, but doesn't explicitly state whether this requires device connection, affects ongoing acquisitions, has rate limits, or what happens if parameters conflict with hardware capabilities. More behavioral context is needed for a mutation-sounding tool.

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

Conciseness5/5

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

The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by a note on behavioral context, then clearly labeled sections for args and returns. Every sentence earns its place, with no redundant or vague phrasing, making it easy to scan and understand.

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 moderate complexity (2 parameters, informational role) and the presence of an output schema (which handles return values), the description is reasonably complete. It covers purpose, behavioral nuance, and parameter semantics. However, without annotations and with sibling tools like 'capture_block,' it could benefit from more explicit integration guidance to be fully self-contained.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaningful semantics by explaining that 'sample_interval_ns' is the 'desired sample interval in nanoseconds' and 'num_samples' is the 'number of samples to capture,' and links them to 'timebase information' and 'block capture.' This goes beyond the bare schema types (integers) and provides context, though it doesn't detail valid ranges or units beyond nanoseconds.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Set') and resource ('timebase for data acquisition'), and distinguishes it from siblings by mentioning it's 'informational' rather than directly controlling hardware. However, it doesn't explicitly differentiate from tools like 'configure_channel' or 'configure_downsampling' that might also affect acquisition parameters.

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

Usage Guidelines3/5

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

The description provides implied usage context by noting this tool is 'informational' and that the 'actual timebase is determined during block capture,' suggesting it should be used for planning or configuration rather than real-time control. However, it doesn't explicitly state when to use this versus alternatives like 'capture_block' or 'configure_downsampling,' nor does it provide clear exclusions or prerequisites.

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

start_streamingB

Start streaming data acquisition.

Args: sample_interval_ns: Sample interval in nanoseconds. buffer_size: Size of streaming buffer. auto_stop: Whether to automatically stop after max_samples. max_samples: Maximum samples to capture (0 = continuous).

Returns: Dictionary containing streaming status and configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
sample_interval_nsYes
buffer_sizeNo
auto_stopNo
max_samplesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions that the tool 'starts streaming' and returns a status dictionary, but doesn't cover critical aspects like whether this requires a connected device, if it's destructive to existing data, error conditions, or rate limits. The description is insufficient for a mutation tool with zero annotation coverage.

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

Conciseness5/5

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

The description is efficiently structured with a clear purpose statement followed by well-organized parameter explanations in bullet-like format. Every sentence adds value, with no redundant information. The 'Args' and 'Returns' sections are appropriately front-loaded and concise.

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

Completeness3/5

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

Given the tool's complexity (starting a streaming process with 4 parameters) and the presence of an output schema (which handles return value documentation), the description is moderately complete. It explains parameters well but lacks crucial context about prerequisites, behavioral implications, and differentiation from sibling tools, making it inadequate for confident usage.

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

Parameters4/5

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

The description provides meaningful explanations for all 4 parameters beyond the 0% schema description coverage. It clarifies that 'sample_interval_ns' is in nanoseconds, 'buffer_size' is for streaming, 'auto_stop' controls automatic stopping, and 'max_samples=0' means continuous capture. This compensates well for the lack of schema descriptions.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Start streaming data acquisition'), which distinguishes it from sibling tools like 'stop_streaming' and 'get_streaming_data'. However, it doesn't explicitly differentiate from other data acquisition methods like 'capture_block', leaving some ambiguity about when to choose streaming versus block capture.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'capture_block' for data acquisition. It mentions parameters like 'auto_stop' and 'max_samples' but doesn't explain the trade-offs between continuous streaming and finite capture, or prerequisites like device connection.

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

stop_signal_generatorB

Stop the signal generator output.

Returns: Dictionary containing status of signal generator.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('Stop') and mentions a return format, but doesn't describe what 'stopping' entails (e.g., immediate halt, graceful shutdown, state preservation), permission requirements, side effects, or error conditions. The return value description is minimal.

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

Conciseness4/5

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

The description is appropriately brief (two sentences) with zero wasted words. The first sentence states the action, the second describes the return format. However, the structure could be slightly improved by combining both ideas into a single more cohesive sentence.

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 zero parameters, an output schema exists, and no annotations, the description provides the minimum viable information about what the tool does. However, for a control operation that likely changes device state, more context about behavioral implications would be helpful despite the output schema covering return values.

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

Parameters4/5

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

The tool has zero parameters with 100% schema description coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, earning a baseline 4 since it doesn't need to compensate for any schema gaps.

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

Purpose4/5

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

The description clearly states the action ('Stop') and resource ('signal generator output'), making the purpose immediately understandable. It doesn't differentiate from siblings like 'stop_streaming' or 'disconnect_device', but the verb+resource combination is specific enough for basic understanding.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'stop_streaming' or 'disconnect_device'. It doesn't mention prerequisites (e.g., whether the signal generator must be running first) or exclusions, leaving the agent to infer usage context from tool names alone.

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

stop_streamingB

Stop streaming data acquisition.

Returns: Dictionary containing stop status and summary of captured data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool returns a dictionary with stop status and data summary, which adds some value beyond the basic action. However, it lacks critical details such as whether this operation is safe (non-destructive), if it requires specific device states, or potential side effects like resource cleanup, leaving significant gaps in transparency.

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

Conciseness5/5

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

The description is extremely concise and well-structured, with two sentences that directly address the tool's action and return value. Every word earns its place, and it's front-loaded with the core purpose. There's no wasted text or ambiguity, making it efficient for an agent to parse.

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

Completeness3/5

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

Given the tool's complexity (a state-changing operation with no parameters) and the presence of an output schema, the description is minimally adequate. It covers the basic action and hints at the return structure, but without annotations, it misses behavioral context like safety or prerequisites. The output schema likely details the return dictionary, so the description doesn't need to elaborate further, but overall completeness is limited.

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

Parameters4/5

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

The tool has 0 parameters, and the schema description coverage is 100%, so there's no need for parameter documentation in the description. The baseline for this scenario is 4, as the description appropriately avoids redundant information about inputs. It focuses instead on the return value, which is relevant given the output schema exists.

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

Purpose4/5

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

The description clearly states the tool's purpose with the specific verb 'stop' and resource 'streaming data acquisition', making it immediately understandable. It distinguishes itself from siblings like 'start_streaming' and 'stop_signal_generator' by focusing on data acquisition rather than signal generation. However, it doesn't explicitly differentiate from all siblings, keeping it at a 4 rather than a 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., that streaming must be active via 'start_streaming'), exclusions, or contextual dependencies. This leaves the agent to infer usage from the tool name alone, which is insufficient for optimal tool selection.

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. 24 tool updates
    • First observedcapture_block
    • First observedcompute_fft
    • First observedconfigure_channel
    • First observedconfigure_downsampling
    • First observedconfigure_math_channel
    • First observedconnect_device
    • First observeddisconnect_device
    • First observedexport_waveform
    • First observedget_channel_config
    • First observedget_device_info
    • First observedget_statistics
    • First observedget_streaming_data
    • First observedlist_devices
    • First observedmeasure_amplitude
    • First observedmeasure_frequency
    • First observedmeasure_pulse_width
    • First observedmeasure_rise_time
    • First observedmeasure_thd
    • First observedset_signal_generator
    • First observedset_simple_trigger
    • First observedset_timebase
    • First observedstart_streaming
    • First observedstop_signal_generator
    • First observedstop_streaming

TDQS

A3.5/5.0

Scored across 24 tools

Disambiguation4/5

Most tools have distinct purposes with clear boundaries, such as capture_block for data acquisition and compute_fft for frequency analysis. However, some measurement tools like measure_amplitude and measure_frequency could be confused as they both rely on a prior capture and target similar signal characteristics, though their specific functions differ.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, such as configure_channel, get_device_info, and measure_amplitude. All tools use snake_case with clear, descriptive verbs, making the set predictable and easy to navigate without any deviations in style.

Tool Count3/5

With 24 tools, the count is borderline high for an oscilloscope server, potentially overwhelming for agents. While it covers many functions like configuration, measurement, and data handling, it might benefit from consolidation or categorization to reduce complexity, though it's not extreme.

Completeness5/5

The tool set provides comprehensive coverage for oscilloscope operations, including device connection, channel configuration, data capture (block and streaming), signal analysis (FFT, statistics), measurements (amplitude, frequency, THD), and auxiliary functions like signal generation and export. No obvious gaps are present, supporting full lifecycle management.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables control and querying of Rigol DHO824 oscilloscopes, allowing users to capture waveforms, take screenshots, and interact with oscilloscope settings through natural language.
    3
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables remote control of LeCroy oscilloscopes via SCPI commands over LAN to perform waveform capture, screenshots, measurements, channel configuration, and triggering through natural language. Supports multiple LeCroy models including WaveSurfer, HDO, WaveRunner, and WavePro series with automatic model detection.
    48
    11
    AGPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to directly control NI oscilloscopes (e.g., PXIe-5160/5164/5110) through the Model Context Protocol, including waveform acquisition, measurement, and configuration.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables LLMs to control a PicoScope 5000A USB oscilloscope for signal generation, block capture, measurements, and frequency response sweeps.
    1
    MIT