PicoScope MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PicoScope MCP Servermeasure the frequency on channel A"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PicoScope MCP Server
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-mcpThe server runs in STDIO mode and is ready to communicate with MCP clients like Claude Desktop.
Installation
Prerequisites
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
Python 3.11+ with uv package manager
Install Dependencies
# Clone or navigate to the project directory
cd picoscope_mcp
# Install dependencies
uv syncUsage
Running the Server
uv run picoscope-mcpThe 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:
PicoSDK C libraries are installed
A PicoScope device is connected
MCP Tools
Discovery & Connection
Tool | Description |
| Find all connected PicoScope devices |
| Connect to a specific device (by serial) or first available |
| Get details about connected device |
| Disconnect from current device |
Channel Configuration
Tool | Description |
| Set channel parameters (range, coupling, offset) |
| Query current channel settings |
| Configure sampling rate (informational) |
Triggering
Tool | Description |
| Configure edge trigger (rising/falling/both) |
Data Acquisition
Tool | Description |
| Single snapshot capture with pre/post trigger samples |
| Begin continuous data capture |
| End streaming mode |
| Retrieve latest streaming data |
Analysis
Tool | Description |
| Calculate signal frequency |
| Measure voltage (pk-pk, RMS, etc.) |
| Edge timing analysis |
| Pulse characteristics |
| Frequency domain analysis |
| Signal statistics (min/max/mean/std) |
| Total Harmonic Distortion |
Advanced
Tool | Description |
| Configure AWG output |
| Disable signal generator |
| Channel operations (A+B, A-B, etc.) |
| Save data to file (CSV/JSON/NumPy) |
| 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
Connect:
connect_device()Configure Channels:
configure_channel()for each channelSet Trigger:
set_simple_trigger()Capture:
capture_block()orstart_streaming()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.pyRunning Tests
uv run pytestAdding Support for New Device Series
Update
device_manager.pyto detect device seriesImport appropriate picosdk module (e.g.,
ps3000a)Map device-specific constants and API calls
Handle series-specific capabilities
Troubleshooting
"PicoSDK not found" Error
Install PicoSDK C libraries for your platform (see Prerequisites).
"No device connected" Errors
Ensure PicoScope is connected via USB
Check device appears in system (Windows Device Manager, macOS System Information, Linux
lsusb)Verify PicoSDK drivers are installed
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
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)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 pytestAreas 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
Pico Technology for the PicoSDK Python wrappers
Anthropic for the Model Context Protocol
Jeff Lowin for FastMCP
The open source community
References
Contact
Issues: GitHub Issues
Discussions: GitHub Discussions
Available Tools
24 toolscapture_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.
| Name | Required | Description | Default |
|---|---|---|---|
| pre_trigger_samples | No | ||
| post_trigger_samples | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | ||
| window | No | hann |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | ||
| enabled | No | ||
| coupling | No | DC | |
| voltage_range | No | ||
| analog_offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | none | |
| ratio | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| operation | No | add | |
| channel_a | No | A | |
| channel_b | No | B |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | csv | |
| channels | No | ||
| filename | No | waveform |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | ||
| num_samples | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| max_samples | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | ||
| measurement_type | No | peak_to_peak |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | ||
| threshold_percent | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | ||
| low_threshold_percent | No | ||
| high_threshold_percent | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| waveform_type | No | sine | |
| frequency_hz | No | ||
| amplitude_mv | No | ||
| offset_mv | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| threshold_mv | Yes | ||
| direction | No | Rising | |
| auto_trigger_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sample_interval_ns | Yes | ||
| num_samples | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sample_interval_ns | Yes | ||
| buffer_size | No | ||
| auto_stop | No | ||
| max_samples | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
24 tool updates
- First observed
capture_block - First observed
compute_fft - First observed
configure_channel - First observed
configure_downsampling - First observed
configure_math_channel - First observed
connect_device - First observed
disconnect_device - First observed
export_waveform - First observed
get_channel_config - First observed
get_device_info - First observed
get_statistics - First observed
get_streaming_data - First observed
list_devices - First observed
measure_amplitude - First observed
measure_frequency - First observed
measure_pulse_width - First observed
measure_rise_time - First observed
measure_thd - First observed
set_signal_generator - First observed
set_simple_trigger - First observed
set_timebase - First observed
start_streaming - First observed
stop_signal_generator - First observed
stop_streaming
TDQS
Scored across 24 tools
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.
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.
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.
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
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
AI Visibility and Content Intelligence tools for Claude and MCP-compatible agents.
Provide detailed Pokémon data and information through a standardized MCP interface. Enable LLMs an…
LLM Orchestration Agent (Langchain Anthropic)
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables control and querying of Rigol DHO824 oscilloscopes, allowing users to capture waveforms, take screenshots, and interact with oscilloscope settings through natural language.3MIT
- AlicenseAqualityCmaintenanceEnables 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.4811AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceEnables 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
- AlicenseNot gradedqualityBmaintenanceEnables LLMs to control a PicoScope 5000A USB oscilloscope for signal generation, block capture, measurements, and frequency response sweeps.1MIT