Skip to main content
Glama
wolog1

siglent-sds-mcp

by wolog1

siglent-sds-mcp

MCP server for controlling a SIGLENT SDS824X HD oscilloscope via SCPI over raw TCP.

Project status: SDS824X HD hardware-tested alpha. Core measurement-driven auto setup is functional on real hardware.

Quick start

# Install
python -m venv .venv && source .venv/bin/activate
pip install -e '.[dev]'

# Test
pytest -q

# Run MCP server (stdio, for AI client config)
python -m siglent_sds_mcp.server

# Quick connectivity probe
python examples/tcp_idn_test.py <scope-ip>

Related MCP server: niscope-mcp

Auto setup — one-command screen setup

The main feature: point at an unknown signal and let the scope measurement engine find usable VDIV / OFST / TDIV settings. The command also saves a screenshot artifact from the final setup path.

# Backwards-compatible CLI name; internally uses measurement-driven auto setup
python examples/auto_find_waveform_tcp.py <scope-ip> --channels C1 C2 C3 C4

# With signal-type hint for better trigger slope policy
python examples/auto_find_waveform_tcp.py <scope-ip> --signal-hint uart

# Direct TTL wiring / 1X probe
python examples/auto_find_waveform_tcp.py <scope-ip> \
    --channels C1 \
    --signal-hint clock \
    --probe 1

# Weak periodic signal policy
python examples/auto_find_waveform_tcp.py <scope-ip> \
    --channels C1 \
    --signal-hint clock \
    --noise-floor 0.05 \
    --min-signal-vpp 0.005

# Restart acquisition after capture only when explicitly requested
python examples/auto_find_waveform_tcp.py <scope-ip> --restart-after-capture

Default behavior: leave_stopped=true. The tool intentionally leaves the scope stopped on the final visible frame. The return object includes screen_hold, final_panel_state, measurements, final_settings, probe_steps, screenshot, and compatibility_parameters.

Compatibility note: coarse_timebase, initial_vdiv, max_points, and refine_attempts are accepted by the historical auto_find_waveform API so older MCP/CLI callers do not break. The current measurement-driven adapter path owns the actual scanning and refinement logic, so those compatibility fields are reported in JSON but are not directly used by the measurement path.

Waveform capture modes

get_waveform_tcp defaults to capture_mode="immediate".

STOP -> WF? DAT2

This intentionally skips WFSU. SDS824X HD field debugging showed that sending WFSU SP,1,NP,0,FP,0 after STOP can refresh/replace the stopped frame before WF? DAT2, which loses intermittent UART/RS485 bursts and often returns an IDLE frame instead.

For stable/repetitive signals only, callers may request the legacy configured path:

STOP -> WFSU SP,1,NP,0,FP,0 -> WF? DAT2

Use it through MCP by setting:

{
  "capture_mode": "configured"
}

The metadata records capture.mode, capture.wfsu_sent, decode.dt_source, parsed.trdl_s, parsed.effective_start_s, parsed.effective_end_s, and warnings when fallback timing is used.

UART decoding

analyze_uart_csv_file now performs real UART 8N1 byte decoding instead of only reporting edge timing. It detects falling-edge start bits, samples 8 data bits LSB-first, validates the stop bit, and returns decoded bytes:

{
  "decoded_hex": "48 69",
  "decoded_ascii": "Hi",
  "frames": [
    {"byte_hex": "0x48", "stop_ok": true, "framing_ok": true}
  ]
}

Thresholding is histogram-based when two voltage levels are visible, with min/max midpoint fallback. This is more robust for small-amplitude UART such as high=5.2 V and low=4.95 V, where simple min/max Vpp rules are too brittle.

Architecture

MCP client (AI)
  │ MCP tool calls (stdio)
  ▼
server.py — FastMCP tools, auto-reconnect
  │
  ▼
sds_tcp_adapter.py — SDS800X HD command adapter
  │  channel / acquisition / trigger / measure / screenshot /
  │  waveform capture (WAVEDESC adaptive decode + envelope decimation) /
  │  measurement-driven auto_setup
  ▼
waveform_capture.py — immediate/configured WF? DAT2 capture modes
  │  immediate mode preserves stopped frames by skipping WFSU
  ▼
tcp_transport.py — RawTcpTransport
  │  socket-level SCPI, IEEE 488.2 binary block parser,
  │  thread-safe (RLock), pre-query socket flush
  ▼
auto_setup.py — compatibility wrapper for historical auto_find_waveform API

SIGLENT SDS824X HD oscilloscope (LAN port 5025)

Command verification pipeline

candidate → official-doc → tested → implemented → safe-tool

Tracked in docs/sds824x-hd-command-matrix.md. Do NOT expose an untested command as a default MCP tool.

Key design decisions

Measurement-driven auto setup

SDS800XHDTcpAdapter.auto_setup() uses scope measurements (PKPK, MEAN, FREQ, PER, MAX, MIN) to select display settings. This avoids relying on a separate offline CSV analyzer for first-pass screen setup.

Weak periodic signal policy

noise_floor_v is treated as the strong-signal threshold. A lower-amplitude signal can still be accepted when the scope reports a valid FREQ or PER and PKPK >= min_signal_vpp. This handles real field observations such as a stable 7.89 kHz signal with only about 22.5 mV peak-to-peak.

WAVEDESC adaptive decode

WF? DAT2 returns 8-bit signed bytes. Voltage decode queries WF? DESC for the WAVEDESC descriptor and uses the descriptor-derived codes_per_div with current panel VDIV? / OFST? for decoding.

Timebase and dt policy

DAT2 timing should use WAVEDESC HORIZ_INTERVAL whenever available. SARA? is recorded as metadata and only used as a fallback. Metadata warnings are emitted when dt_source falls back to SARA or TDIV because UART/protocol decoding can be wrong if the fallback does not match the DAT2 memory interval.

Min/max envelope decimation

When max_points < raw sample count, each bucket outputs min + max voltages instead of naive stride-sampling. Preserves glitches/spikes stride would miss.

ARM/STOP behaviour

get_waveform_tcp immediate mode freezes the current frame with STOP and reads DAT2 directly. This is the default for intermittent signals. The older WFSU path is available only through capture_mode="configured".

Trigger level policy

C?:TRLV <level> is a known issue on SDS824X HD firmware 4.8.12.1.1.6.5. Display-oriented auto setup does not depend on this command by default. set_trigger_level=true must be requested explicitly.

Project structure

src/siglent_sds_mcp/
  server.py              — MCP tools, auto-reconnect, FastMCP
  sds_tcp_adapter.py     — Command adapter, WAVEDESC decode, envelope, auto_setup
  waveform_capture.py    — WF? DAT2 capture modes, immediate skips WFSU
  tcp_transport.py       — Raw TCP socket, lock, binary block parser
  auto_setup.py          — Compatibility wrapper for auto_find_waveform API
  uart_analyzer.py       — Offline UART CSV analyzer and 8N1 byte decoder
  rs485_analyzer.py      — RS485 differential pair analyzer
  modbus_timing.py       — Modbus RTU timing calculator
  report.py              — Markdown field report generator
  artifacts.py           — Timestamped artifact paths, JSON writer
  transport.py           — PyVISA fallback (legacy, not wired into MCP)
  scope_driver.py        — SiglentSDSDriver with safety gate (legacy)

docs/
  architecture.md                  — Layered design, UART capture reference
  sds824x-hd-command-matrix.md     — Per-command verification status
  sds824x-hd-knowledge-base.md     — Instrument-specific knowledge
  verification-workflow.md         — Hardware verification procedure

tests/   — pytest, parser tests, TCP transport tests, auto setup helper tests
examples/ — auto_find_waveform_tcp, TCP IDN probe, waveform/RS485 capture

Safety model

Allowed

Blocked

*IDN?, run/stop/single

*RST, factory reset

Channel/timebase/trigger setup

Firmware update

Measurement query

Network config changes

Screenshot/waveform fetch

File deletion/formatting

Offline waveform analysis

Arbitrary SCPI writes

Raw SCPI writes are NOT exposed as MCP tools. safe_scpi_query_tcp only accepts ?-suffixed commands.

Test coverage

pytest -q

Key test areas:

  • test_unit_parsing.py_parse_voltage, _parse_time, _parse_sample_rate

  • test_wavedesc.py / test_wavedesc_parser.py — synthetic WAVEDESC decode, ASCII prefix handling

  • test_tcp_binary_prefix.pyquery_binary IEEE 488.2 / BMP prefix skipping

  • test_auto_setup.py_pick_vdiv, _pick_tdiv, measurement parser and SCPI number formatting

  • test_auto_find_compat.py — weak periodic detection, screen hold, screenshot artifact, compatibility parameters

  • test_waveform_capture_modes.py — immediate mode skips WFSU; configured mode sends WFSU with warning

  • test_uart_decoder.py — UART 8N1 byte decoding, hex/ascii output, low-Vpp thresholding

  • test_tcp_transport_parser.py — socketpair binary block parsing

Target device

  • SIGLENT SDS824X HD / SDS800X HD family

  • SCPI over raw TCP, port 5025

  • Firmware verified: 4.8.12.1.1.6.5

Reference

Available Tools

20 tools
analyze_rs485_pair_csv_fileC

Analyze two CSV waveforms as RS485 A/B and compute Vdiff = VA - VB.

ParametersJSON Schema
NameRequiredDescriptionDefault
baudrateNo
csv_a_pathYes
csv_b_pathYes
threshold_vNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It states the core computation (Vdiff = VA - VB) but omits input CSV format requirements, validation behavior, potential errors, or whether any RS485 frame decoding occurs. This leaves significant ambiguity about the tool's behavior.

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

Conciseness3/5

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

The description is a single efficient sentence that front-loads the core action and avoids verbosity. However, it is under-specified, sacrificing necessary detail for brevity. It is concise, but not optimally informative.

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

Completeness2/5

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

Despite having an output schema, the description is incomplete for a tool with four parameters and no annotations. It lacks context about file format, baudrate relevance, threshold behavior, and expected output structure, making it insufficient for an agent to invoke the tool correctly without additional context.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not compensate by explaining the parameters. While csv_a_path and csv_b_path are somewhat self-explanatory given the A/B context, the purpose of baudrate and threshold_v is entirely unclear. The description adds no meaningful parameter semantics beyond what the parameter names imply.

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

Purpose5/5

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

The description explicitly states the tool analyzes two CSV waveforms as RS485 A/B and computes Vdiff = VA - VB, providing a specific verb, resource, and output. This clearly differentiates it from sibling tools like analyze_uart_csv_file, which presumably handles single-ended UART CSV files.

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

Usage Guidelines3/5

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

The description implies usage when the user has two CSV waveforms representing RS485 A and B signals, but it does not explicitly discuss when to use this tool versus alternatives like analyze_uart_csv_file. No exclusions or alternative conditions are provided, so the guidance remains at the level of implied usage.

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

analyze_uart_csv_fileC

Analyze a two-column UART waveform CSV: time_s, voltage_v.

ParametersJSON Schema
NameRequiredDescriptionDefault
baudrateNo
csv_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Analyze', which is vague and does not disclose what happens during analysis, what the output contains, or how baudrate affects behavior. There is no mention of decoding UART data, error handling, or performance implications.

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

Conciseness4/5

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

The description is a single, concise sentence that earns its place by defining the CSV format. It is front-loaded and contains no filler, though it may be too terse for the tool's complexity.

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

Completeness2/5

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

Given the tool's role in UART analysis and the presence of an output schema, the description is still insufficient. It does not explain the analysis process, the role of baudrate, or when to invoke this tool. The single sentence provides minimal context and leaves the agent to infer critical details.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It adds context for csv_path by defining the column structure (time_s, voltage_v), but entirely ignores baudrate, which is a meaningful parameter for UART analysis. The description does not explain why baudrate is needed or how it interacts with the waveform data.

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

Purpose4/5

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

The description clearly states the tool analyzes a UART waveform CSV and specifies the two-column format (time_s, voltage_v). This distinguishes it from sibling tools like analyze_rs485_pair_csv_file. However, it doesn't specify what kind of analysis is performed (e.g., decoding, timing measurement), leaving some ambiguity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like capture_uart_auto_tcp or analyze_rs485_pair_csv_file. The description implies offline analysis of a CSV, but does not mention prerequisites, differentiators, or exclusions.

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

auto_find_waveform_tcpD

Backwards-compatible multi-channel auto setup entry point.

ParametersJSON Schema
NameRequiredDescriptionDefault
probeNo
channelsNo
max_pointsNo
signal_hintNounknown
initial_vdivNo1V
leave_stoppedNo
noise_floor_vNo
min_signal_vppNo
coarse_timebaseNo1MS
refine_attemptsNo
set_trigger_levelNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

D1.5/5.0
Behavior1/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'entry point' and provides no information about side effects, performance implications, waveform finding behavior, or what the user should expect. This is a critical gap.

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

Conciseness2/5

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

The description is a single sentence, which is concise, but it is under-specified. It does not earn its place because it provides almost no useful content. This is an example of under-specification rather than effective conciseness.

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

Completeness1/5

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

For a complex tool with 11 optional parameters, no annotations, and no schema descriptions, the description is grossly incomplete. It fails to explain the auto setup process, the meaning of 'backwards-compatible', return values, or parameter semantics. The tool cannot be used safely or correctly with this description alone.

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

Parameters1/5

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

The description provides no parameter information at all. With 11 parameters and 0% schema description coverage, the agent has no way to understand the meaning of 'probe', 'channels', 'signal_hint', or any other parameter. The description fails to compensate for the lack of schema descriptions.

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

Purpose2/5

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

The description 'Backwards-compatible multi-channel auto setup entry point' is vague and does not clearly state what the tool does. It lacks a specific verb and resource, and does not distinguish itself from sibling tool auto_setup_tcp which likely serves a similar purpose.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like auto_setup_tcp or capture_uart_auto_tcp. The phrase 'backwards-compatible' implies legacy usage, but no explicit context or exclusions are given.

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

auto_setup_tcpC

Auto setup one channel and leave the waveform visible by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
probeNo
channelNoC1
settle_sNo
signal_hintNounknown
leave_stoppedNo
noise_floor_vNo
min_signal_vppNo
set_trigger_levelNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. It discloses only that the waveform is left visible by default, a useful trait, but it does not explain what 'auto setup' actually does (e.g., which settings are changed, whether acquisition starts, or side effects). This is insufficient for an 8-parameter tool.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that conveys the core action and a key behavioral detail. It is appropriately sized and avoids wasted words, achieving high conciseness and clear structure.

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

Completeness2/5

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

Despite the tool's moderate complexity (8 optional parameters, no annotations, no parameter descriptions), the description provides only a high-level summary. It lacks any contextual framing around the parameters, expected outcomes, or environment prerequisites. The existence of an output schema mitigates return-value explanation, but the core setup behavior remains under-specified.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate. It only mentions 'channel' generically, which maps to the channel parameter, but fails to explain any of the 8 parameters (probe, settle_s, signal_hint, etc.) or their defaults. The description adds almost no value beyond the bare schema titles.

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

Purpose4/5

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

The description clearly states the tool's function: 'Auto setup one channel' with a specific behavior 'leave the waveform visible by default.' This provides a clear verb, resource, and scope. It does not explicitly distinguish from siblings like auto_find_waveform_tcp or configure_channel_tcp, but the phrase 'one channel' and 'visible by default' gives it a distinct identity.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives. It does not mention use cases, prerequisites, or exclusions. The purpose is implied but no contextual direction is provided, making this a 'no guidance' case.

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

capture_uart_2mbps_tcpC

One-shot candidate workflow for 2 Mbps UART capture and CSV analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelNoC1
max_pointsNo
logic_levelNo3.3V TTL

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations available, the description must carry the full behavioral burden. It mentions 'workflow' and 'CSV analysis' but doesn't disclose whether the tool connects to an instrument, modifies settings, writes files, or what side effects occur, leaving the agent with substantial uncertainty.

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

Conciseness4/5

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

It is a single short sentence, making it very concise and front-loaded. The word 'candidate' is somewhat extraneous but does not significantly impair readability.

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

Completeness2/5

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

For a tool that likely orchestrates multiple steps (capture, analysis) and returns a structured output schema, this description is far too sparse. It doesn't explain the workflow steps, expected outputs, or relationship to sibling tools.

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

Parameters1/5

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

The schema has 0% description coverage and the description does not mention channel, max_points, or logic_level. Since the description must compensate but doesn't, the agent lacks semantic understanding of these parameters.

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

Purpose4/5

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

The description identifies the tool as a one-shot workflow for 2 Mbps UART capture and CSV analysis, which conveys its core function and distinguishes it from the automatic variant (capture_uart_auto_tcp) and the file-analyzer (analyze_uart_csv_file). However, it is phrased as a noun phrase rather than a direct action, with 'candidate' adding ambiguity.

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

Usage Guidelines3/5

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

The phrase 'one-shot' implies a single capture scenario, but the description provides no explicit guidance on when to choose this tool over capture_uart_auto_tcp or analyze_uart_csv_file, nor does it mention prerequisites or exclusions.

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

capture_uart_auto_tcpA

Capture UART waveform and auto-decode with full self-calibration.

Features

  • P1: VDIV/OFST auto-ranging from live MAX/MIN measurement.

  • P2: Baud-rate auto-detection from run-length statistics (baudrate=0).

  • P3: Noise-trigger retry: re-ARMs when PKPK < min_pkpk_v.

  • P4: TDIV auto-calculated to fit max_bytes at the given/detected baud rate.

  • P5: cpd sanity-check: re-derives codes-per-div when WAVEDESC value is off.

Parameters

channel: Oscilloscope channel (default C1). baudrate: Nominal baud rate. 0 = auto-detect. probe_attn: Probe attenuation factor (1 or 10). max_bytes: Estimated maximum message length in bytes (for TDIV sizing). timeout_s: Seconds to wait for a valid trigger. max_trigger_attempts: Re-ARM attempts before giving up. min_pkpk_v: Minimum PKPK (V) to accept a trigger as genuine.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelNoC1
baudrateNo
max_bytesNo
timeout_sNo
min_pkpk_vNo
probe_attnNo
max_trigger_attemptsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure and does so thoroughly. It discloses specific behaviors: VDIV/OFST auto-ranging, baud-rate auto-detection, noise-trigger retry when PKPK < min_pkpk_v, TDIV calculation, and cpd sanity-check. It also explains timeout and retry attempts, giving a transparent view of the tool's operation.

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

Conciseness5/5

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

The description is well-structured with a summary intro, a bulleted Features list, and a Parameters list. Each feature and parameter earns its place with specific technical detail. No filler or redundancy; it is informative yet compact for the amount of information conveyed.

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

Completeness4/5

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

The description covers all key aspects: purpose, features, and parameter semantics. An output schema exists, so return values are likely documented there. Minor gap: no mention of prerequisites like requiring an active TCP connection (suggested by sibling connect_tcp), but overall it is complete enough for a 7-param tool.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It lists all 7 parameters with concise yet meaningful explanations: channel (with default), baudrate (0=auto-detect), probe_attn (factor 1 or 10), max_bytes (for TDIV sizing), timeout_s (wait for trigger), max_trigger_attempts (re-ARM attempts), and min_pkpk_v (trigger acceptance threshold). This adds real semantic value beyond the bare schema titles.

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

Purpose5/5

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

The description opens with a clear verb+resource statement: 'Capture UART waveform and auto-decode with full self-calibration.' The Features section further specifies auto-ranging, baud-rate auto-detection, noise-trigger retry, and TDIV auto-calculation, which distinguishes this tool from sibling capture_uart_2mbps_tcp by emphasizing autonomous calibration.

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

Usage Guidelines4/5

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

The description implies usage context through the 'auto' in the name and features like baudrate=0 auto-detection and self-calibration. It clearly frames the tool for scenarios requiring automatic setup, but does not explicitly state when to prefer this over capture_uart_2mbps_tcp or other capture tools, nor does it mention exclusions.

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

configure_acquisition_tcpD

Configure acquisition/timebase/trigger using SDS-style candidate commands.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandNo
timebaseNo
trigger_modeNo
trigger_delayNo
trigger_levelNo
trigger_slopeNo
trigger_sourceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

D1.9/5.0
Behavior1/5

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

With no annotations, the description must fully disclose behavior. It only says 'Configure' without mentioning side effects, device state changes, permissions, or whether 'candidate commands' are actually applied. The phrasing is ambiguous and potentially misleading about the tool's effects.

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

Conciseness3/5

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

The description is a single, concise sentence with no filler words, but it sacrifices clarity for brevity. The jargon 'SDS-style candidate commands' is not explained, making the sentence less useful than its length suggests. It is appropriately short but not well-structured for comprehension.

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

Completeness1/5

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

The tool has 7 optional parameters and no required fields, yet the description provides no insight into how they interact or when to use various combinations. It lacks context about related tools, behavior, and parameter semantics, making it inadequate for an agent to select and invoke correctly. The presence of an output schema does not compensate for missing usage and behavioral context.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning to the 7 parameters. It does not explain valid formats for 'timebase' or 'trigger_delay', the significance of 'command' enums, or how parameters combine. The agent is left without essential information to construct valid calls.

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

Purpose3/5

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

The description specifies a verb ('Configure') and resource ('acquisition/timebase/trigger'), but does not clarify what 'SDS-style candidate commands' means or how it differs from sibling tools like configure_channel_tcp. It gives a general sense of purpose but lacks concrete detail.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as auto_setup_tcp or configure_channel_tcp. There are no exclusions, prerequisites, or context hints for choosing this configuration tool over others.

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

configure_channel_tcpC

Configure a channel using SDS-style TCP SCPI candidate commands.

ParametersJSON Schema
NameRequiredDescriptionDefault
vdivNo
probeNo
traceNo
offsetNo
channelNoC1
couplingNo
bandwidth_limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits but does not. It fails to mention side effects on the device, need for an established TCP connection, or what 'candidate commands' means. The mutation of channel settings is implied but not detailed.

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

Conciseness4/5

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

The description is a single concise sentence with no redundant information. However, the phrase 'candidate commands' is vague and could be considered padding, slightly reducing efficiency.

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

Completeness1/5

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

Given the tool's complexity (7 optional parameters, no annotations), the one-line description is severely inadequate. It omits prerequisites (e.g., active TCP connection), parameter details, and expected behavior, making it nearly useless for an agent to invoke correctly.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning to the 7 parameters. Parameter titles like 'Vdiv' and 'probe' are self-explanatory but units, ranges, and string formats are absent. The description does not compensate for the schema's lack of documentation.

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

Purpose4/5

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

The description clearly identifies the tool as configuring a channel via TCP, distinguishing it from get_channel_tcp (read) and configure_acquisition_tcp. However, the phrase 'SDS-style TCP SCPI candidate commands' introduces jargon and ambiguity, preventing a perfect score.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus the many sibling tools (connect_tcp, get_channel_tcp, configure_acquisition_tcp). The context is implied but not explicit, with no exclusions or alternatives mentioned.

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

connect_tcpC

Connect to the oscilloscope through raw TCP SCPI socket.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYes
portNo
timeout_sNo
header_offNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden for behavioral disclosure, but only states the action of connecting. It does not mention whether the connection is persistent, if repeated calls are safe, or what happens on failure. The phrase 'raw TCP SCPI socket' adds some protocol context but no side-effect details.

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

Conciseness4/5

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

The description is a single, focused sentence with no wasted words. It is front-loaded with the verb and resource. However, it is so terse that it under-serves the tool's complexity.

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

Completeness1/5

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

Given the existence of four parameters, no annotations, and an output schema that is not described, this one-sentence description is grossly insufficient. It omits connection lifecycle details, parameter meanings, and how it fits into the workflow with sibling tools.

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

Parameters1/5

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

The input schema has 0% description coverage, so the description must compensate. It does not explain host, port, timeout_s, or header_off beyond the schema defaults. The phrase 'raw TCP SCPI socket' hints at host/port but leaves timeout and header_off unaddressed.

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

Purpose5/5

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

The description clearly states a specific verb and resource: 'Connect to the oscilloscope through raw TCP SCPI socket.' This distinguishes it from sibling tools like identify_tcp and disconnect_tcp, which serve different purposes.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., network reachability), nor does it point to disconnect_tcp for closing the connection. Usage context is only implied by the tool name.

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

disconnect_tcpA

Disconnect the current raw TCP oscilloscope session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. It states the action but does not disclose side effects such as session invalidation, safety of repeated calls, or impact on ongoing operations.

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

Conciseness5/5

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

The description is a single, direct sentence with no superfluous words. It is appropriately front-loaded and concise for a zero-parameter tool.

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

Completeness4/5

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

Given the tool's simplicity, zero parameters, and the presence of an output schema, the description covers the core action. The phrase 'current raw TCP oscilloscope session' provides necessary context, though prerequisites and error behavior are not mentioned.

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

Parameters4/5

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

The tool has zero parameters, so schema coverage is 100% vacuously. Per the rubric, zero parameters earns a baseline of 4; no additional parameter explanation is needed.

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

Purpose5/5

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

The description uses the specific verb 'disconnect' and identifies the resource 'current raw TCP oscilloscope session', clearly distinguishing it from connect_tcp and other sibling tools.

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

Usage Guidelines3/5

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

Usage is implied by the verb 'disconnect' and the mention of 'current session', but there is no explicit guidance on when to use it versus alternatives, prerequisites like being connected, or behavior when already disconnected.

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

generate_reportB

Generate a Markdown field report from captured artifacts and JSON summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNo
titleNoSIGLENT SDS field capture report
scenarioNo
scope_idnNo
output_pathNoartifacts/reports/report.md
screenshot_pathNo
waveform_csv_pathsNo
modbus_timing_json_pathNo
uart_analysis_json_pathNo
waveform_metadata_pathsNo
rs485_analysis_json_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure, but it only says 'generate a Markdown field report.' It fails to mention that the tool writes to a file (via output_path), reads multiple external files, or any side effects or prerequisites. This is a significant transparency gap for a tool with many inputs.

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

Conciseness4/5

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

The description is a single concise sentence that is front-loaded with the core purpose. It earns its place, but given the tool's complexity (11 parameters), the extreme brevity borders on under-specification rather than clean conciseness.

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

Completeness2/5

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

The tool has high complexity (11 parameters, no annotations, no explicit output schema details visible) and the description is a one-liner. It does not explain the workflow, what artifacts are expected, how the report is structured, or what happens if required inputs are missing. The description is far from complete for an agent to invoke this correctly.

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

Parameters2/5

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

Schema description coverage is 0%, and the description gives only a generic phrase 'captured artifacts and JSON summaries' which vaguely maps to parameters like screenshot_path, waveform_csv_paths, and *_json_paths. It provides no specific meaning for any of the 11 parameters, leaving the agent to infer their roles.

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

Purpose5/5

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

The description states a clear action ('Generate') and a specific resource ('Markdown field report') with source materials ('captured artifacts and JSON summaries'). This clearly distinguishes it from sibling tools, none of which generate reports; it is the only reporting tool in the list.

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

Usage Guidelines3/5

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

There is no explicit 'when to use' or alternatives, but the phrase 'from captured artifacts and JSON summaries' implies it should be used after capture/analysis tools have produced these artifacts. This is only implied, not stated, such as 'after using capture_* and analyze_* tools'.

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

get_acquisition_status_tcpA

Query acquisition state, timebase, sample rate and trigger status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. 'Query' implies a non-mutating operation, but the description does not explicitly state that no settings are changed, whether a connection is required, or what the return structure contains beyond the named fields.

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

Conciseness5/5

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

The description is one compact sentence that front-loads the verb and the key data being queried. No filler or redundant information.

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

Completeness5/5

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

This is a simple no-parameter query tool with an output schema present. The description fully captures the tool's purpose and scope; no additional behavioral notes are necessary.

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

Parameters4/5

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

The tool has zero parameters, and the schema confirms this. With no parameters to describe, the description needs to contribute nothing on parameter semantics; the baseline of 4 applies.

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

Purpose5/5

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

Description uses a specific verb ('Query') and identifies the exact resource (acquisition state, timebase, sample rate, trigger status). This clearly distinguishes it from sibling tools like configure_acquisition_tcp, which is a write/set operation.

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

Usage Guidelines3/5

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

The description implies a read-only status query but does not explicitly state when to use this tool versus alternatives like configure_acquisition_tcp or get_channel_tcp. No when-not or alternative guidance is provided.

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

get_channel_tcpB

Query a channel configuration through the TCP adapter.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelNoC1

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It clearly indicates a read operation ('Query'), but it does not disclose prerequisites such as an active TCP connection, behavior on invalid channel, side effects, or error handling. This is minimal behavioral disclosure.

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

Conciseness5/5

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

The description is a single, clear sentence with no redundancy. It is appropriately concise for a simple tool, front-loading the verb and resource.

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

Completeness3/5

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

The tool is simple with one parameter and an output schema, so the description need not explain return values. However, it omits any context about connection requirements or relationship to the TCP adapter setup, making it only minimally complete. It is adequate but lacks broader operational context.

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

Parameters2/5

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

The schema has a single parameter 'channel' with an enum, and the description's mention of 'a channel configuration' vaguely ties to it, but the description adds no syntax, format, or meaning beyond what the schema already shows. With schema description coverage at 0%, it fails to compensate for the lack of parameter context.

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

Purpose4/5

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

The description uses the specific verb 'Query' and identifies the resource as 'channel configuration', which distinguishes it from sibling tools like configure_channel_tcp or get_acquisition_status_tcp. However, it does not explicitly name alternatives or clarify scope, so it falls short of a 5.

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

Usage Guidelines3/5

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

The description implies this tool is for reading channel settings, and the sibling configure_channel_tcp implies that tool is for writing, but no explicit guidance is provided about when to choose this over other query tools or what prerequisites (e.g., connection) are needed. Usage is only implied by the verb and noun phrase.

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

get_waveform_tcpC

Download waveform data and save CSV.

capture_mode="immediate" skips WFSU and reads WF? DAT2 from the current stopped frame. Use capture_mode="configured" only for stable/repetitive signals where WFSU-selected waveform memory is desired.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelNoC1
csv_pathNo
max_pointsNo
capture_modeNoimmediate
restore_trmdNo
metadata_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It adds useful context about capture_mode behavior (skips WFSU, reads WF? DAT2, requires stopped frame) and warns that configured mode is only for stable/repetitive signals. However, it does not disclose side effects of restore_trmd, file overwrites, or other potential mutations.

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

Conciseness4/5

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

The description is brief and front-loaded with the main purpose. Both sentences add value, but the second sentence is dense with technical jargon (WFSU, WF? DAT2) that could be clearer for an AI agent. Still, no wasted words.

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

Completeness2/5

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

For a tool with 6 parameters, no annotations, and an output schema, the description is under-specified. It explains capture_mode but leaves the rest of the parameter semantics, prerequisites beyond a stopped frame, and any side effects unaddressed, making it incomplete for reliable invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain parameters. It only explains capture_mode and its two values; the other five parameters (channel, csv_path, max_points, restore_trmd, metadata_path) are left entirely undescribed. This provides minimal compensation for the high coverage gap.

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

Purpose4/5

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

The description states a specific action ('Download waveform data and save CSV') with a clear resource and output format. It distinguishes from siblings by focusing on downloading/saving rather than configuring or measuring, though it doesn't explicitly compare with auto_find_waveform_tcp.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus sibling tools. The description only provides usage guidance for the capture_mode parameter (immediate vs. configured), not for tool selection, so it lacks the explicit when/when-not or alternative recommendations needed for a 3.

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

identify_tcpB

Query *IDN? through the connected raw TCP session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not explicitly state that this is a read-only operation, what happens if no session is connected, or any error/timeout behavior. The only behavioral trait mentioned is that it operates on a 'connected raw TCP session', leaving other aspects undisclosed.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It states the core action and resource directly. However, it may be considered under-specified for a full tool description, but that is more relevant to other dimensions.

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

Completeness3/5

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

The description covers the basic action and resource but omits important contextual details such as the prerequisite of an active TCP connection and how this tool fits into the workflow relative to siblings like connect_tcp and disconnect_tcp. The presence of an output schema likely explains return values, but usage context is incomplete.

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

Parameters4/5

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

The tool has zero parameters, and the schema coverage is 100% (vacuously). The description adds no parameter semantics, but none are needed. The baseline of 4 applies because there are no parameters to document.

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

Purpose5/5

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

The description uses a specific verb ('Query') and clearly identifies the exact resource (the SCPI command '*IDN?') and the communication channel ('connected raw TCP session'). This clearly distinguishes the tool from siblings like 'configure_channel_tcp' or 'measure_tcp', which perform different actions.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention that an active TCP connection is required (e.g., via connect_tcp), nor does it contrast with other query or identification tools. The only implied guidance is the phrase 'connected raw TCP session', which suggests a prerequisite but does not explicitly state it.

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

measure_tcpD

Take a measurement using SDS-style candidate commands.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelNoC1
parameterNoPKPK

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

D1.5/5.0
Behavior1/5

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

With no annotations, the description carries the full burden, but it discloses no behavioral traits. It doesn't state whether this is a read-only query, whether it requires an active TCP connection, whether it blocks until measurement completes, or what the output represents.

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

Conciseness2/5

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

The description is a single sentence, but it is under-specified rather than concise. The phrase 'SDS-style candidate commands' is unexplained and the sentence doesn't earn its place by conveying meaningful information.

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

Completeness1/5

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

Given the presence of an output schema and two parameters with enums, the description is far too thin. It doesn't explain what measurement is performed, how the parameters map to measurement commands, or what the output represents.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no explanation for either 'channel' or 'parameter'. The enum values (PKPK, MAX, etc.) are not explained, so the description does not compensate for the lack of schema descriptions.

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

Purpose2/5

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

The description is essentially tautological: 'Take a measurement' repeats the tool name 'measure_tcp'. The qualifier 'SDS-style candidate commands' adds jargon without clarifying what measurement is taken, on what resource, or how it differs from sibling tools like get_waveform_tcp.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. It doesn't mention required connection state, differences from get_waveform_tcp or configure_acquisition_tcp, or any prerequisites.

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

modbus_rtu_timingA

Calculate Modbus RTU character time and silence intervals.

ParametersJSON Schema
NameRequiredDescriptionDefault
parityNoN
baudrateNo
data_bitsNo
stop_bitsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It does specify the outputs (character time and silence intervals) but does not mention whether the operation is safe, deterministic, or if there are any side effects. Since it's a calculation tool, the lack of harm disclosure is less critical, but more detail on the calculation behavior would be helpful.

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

Conciseness5/5

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

The description is a single, focused sentence, front-loaded with the action verb. It contains zero redundant words and efficiently communicates the tool's purpose, earning the highest score for conciseness.

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

Completeness3/5

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

The tool is relatively simple, and an output schema exists (as per context signals), so return values are likely covered there. However, the description lacks context on when to use this timing calculation, units of the result, or any prerequisite knowledge. It is minimally viable but leaves some gaps.

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

Parameters1/5

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

The description mentions no parameters whatsoever. The schema has 0% description coverage, meaning the parameter names (parity, baudrate, data_bits, stop_bits) are only given with types and defaults, not meanings. The description fails to explain how these parameters affect the calculation, which is a significant gap for a 4-parameter tool.

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

Purpose5/5

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

The description uses a specific verb 'Calculate' and clearly identifies the resource: 'Modbus RTU character time and silence intervals.' This clearly distinguishes it from the sibling tools, which are all connection, measurement, and analysis tools, making the tool's unique purpose evident.

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

Usage Guidelines4/5

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

The description implies the usage context: when you need to determine Modbus RTU timing parameters. It doesn't explicitly state when not to use it or mention alternatives, but given there are no similar timing tools among the siblings, this is clear enough. No exclusions are needed.

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

project_statusC

Return implementation status and verification boundary.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It does not state whether the tool is read-only, what it returns, any side effects, or what 'verification boundary' implies operationally. This leaves significant behavioral ambiguity.

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

Conciseness4/5

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

The description is a single sentence with no wasted words, and the verb is front-loaded. It is appropriately sized for a tool with no parameters, though the content is under-specified.

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

Completeness2/5

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

Despite having no parameters and an output schema, the description is incomplete for the tool's apparent role. It does not clarify what 'implementation status' or 'verification boundary' mean in the context of this system, nor when to use it relative to the many sibling tools. The agent is left with insufficient context to decide if this tool is relevant.

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

Parameters4/5

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

The tool has zero parameters and the schema coverage is 100% (trivially empty). Per the rubric, a 0-parameter tool receives a baseline of 4. The description does not need to explain parameters because there are none.

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

Purpose3/5

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

The description states an action ('Return') and a resource ('implementation status and verification boundary'), but the meaning of these terms is vague and not differentiated from sibling tools like get_acquisition_status_tcp. It is more specific than a pure tautology, but lacks clarity about what 'implementation status' and 'verification boundary' concretely refer to.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not mention any context, prerequisites, or exclusion criteria, leaving the agent to guess when project_status is the appropriate choice.

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

safe_scpi_query_tcpA

Send a read-only SCPI query ending in '?' through raw TCP.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the critical behavioral trait of being read-only, which is essential for safe invocation. It also adds the '?' suffix requirement, giving guidance on the expected command format. However, it omits details about connection prerequisites or error handling, so it is not a 5.

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

Conciseness5/5

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

The description is a single sentence with no filler. It front-loads the verb and immediately conveys the key constraints and transport, making it highly efficient.

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

Completeness3/5

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

The tool is simple and has an output schema, but the description omits prerequisite information such as the need for an active TCP connection (given the sibling tool connect_tcp). This could lead to invocation errors. The safety and command format are covered, but the connection dependency is a notable gap.

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

Parameters4/5

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

The schema has no description coverage (0%), so the description must compensate. It does so by defining the 'command' parameter as a read-only SCPI query ending in '?', providing clear format guidance beyond the bare string type.

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

Purpose5/5

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

The description uses a specific verb ('Send'), defines the resource ('SCPI query'), and includes clear constraints ('read-only', 'ending in ?') and transport ('raw TCP'). This strongly distinguishes it from sibling tools like measure_tcp or auto_setup_tcp.

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

Usage Guidelines4/5

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

The description clearly conveys the tool is for read-only SCPI queries, which establishes a clear usage context. It does not explicitly mention alternatives or exclusions, but the 'read-only' and 'ending in ?' constraints effectively tell the agent when this tool is appropriate.

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

screenshot_tcpC

Capture a screen image through candidate SCDP command.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_pathNo
include_base64No

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description must carry full behavioral transparency. It only mentions the 'SCDP command' without explaining what happens after capture, how output_path interacts with include_base64, whether a connection is required, or what the return value contains. This is insufficient for an agent to anticipate side effects or output.

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

Conciseness3/5

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

The description is a single sentence, so it is concise in length. However, the phrasing 'through candidate `SCDP` command' is awkward and vague, making it less effective than a clearer, well-structured sentence.

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

Completeness2/5

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

For a tool with two optional parameters and an output schema, the description is incomplete. It omits what happens when output_path is null, the structure of the base64 output, and any prerequisites such as being connected via TCP. An agent would likely need to inspect other tools or make assumptions.

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

Parameters2/5

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

The input schema shows two parameters (output_path, include_base64) with zero description coverage, and the description does not mention either parameter. The parameter names give partial hints but fail to explain defaults, valid formats, or how they affect the screenshot capture.

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

Purpose4/5

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

The description clearly states the action ('Capture a screen image') and names the resource ('`SCDP` command'). It effectively differentiates from sibling tools such as measure_tcp or get_waveform_tcp. However, the phrase 'candidate `SCDP` command' is ambiguous and doesn't clarify whether 'candidate' is a typo or a technical term, which slightly reduces clarity.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no mention of prerequisites like an active TCP connection, and no exclusions or fallback recommendations. The only implied usage is 'when you need a screenshot,' which is not differentiated from other capture tools.

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. Dates show when Glama detected each change.

  1. 20 tool updatesv0.1.0
    • First observedanalyze_rs485_pair_csv_file
    • First observedanalyze_uart_csv_file
    • First observedauto_find_waveform_tcp
    • First observedauto_setup_tcp
    • First observedcapture_uart_2mbps_tcp
    • First observedcapture_uart_auto_tcp
    • First observedconfigure_acquisition_tcp
    • First observedconfigure_channel_tcp
    • First observedconnect_tcp
    • First observeddisconnect_tcp
    • First observedgenerate_report
    • First observedget_acquisition_status_tcp
    • First observedget_channel_tcp
    • First observedget_waveform_tcp
    • First observedidentify_tcp
    • First observedmeasure_tcp
    • First observedmodbus_rtu_timing
    • First observedproject_status
    • First observedsafe_scpi_query_tcp
    • First observedscreenshot_tcp

TDQS

C2.7/5.0
Disambiguation4/5

Most tools have clear, distinct purposes, but there is some overlap between auto_setup_tcp and auto_find_waveform_tcp, and between the two UART capture tools. However, detailed descriptions help differentiate them, so confusion is limited.

Naming Consistency3/5

The '_tcp' suffix is consistently used for oscilloscope communication tools, but naming patterns vary (e.g., modbus_rtu_timing and project_status are noun-first, while others are verb-first). This mixed style is readable but not fully predictable.

Tool Count3/5

With 20 tools, the set is at the heavy end for a specialized server, but each tool serves a specific function. Some tools like capture_uart_2mbps_tcp and auto_find_waveform_tcp feel niche or redundant, suggesting the count could be slightly trimmed.

Completeness4/5

Core oscilloscope operations (connect, configure, measure, capture, screenshot) are well covered, and there are dedicated analysis tools for UART, RS485, and Modbus. However, there is no explicit RS485 capture tool, and some operations like separate trigger configuration are bundled into broader tools, leaving minor gaps.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that enables AI assistants to control Siglent SDS oscilloscopes over a local network using SCPI commands. It allows users to measure signals, configure channel and acquisition settings, and capture waveforms or screenshots through natural language.
    13
    11
    6
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to directly control NI oscilloscopes (e.g., PXIe-5160/5164/5110) through the Model Context Protocol, including waveform acquisition, measurement, and configuration.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables remote control of Siglent oscilloscopes via SCPI over TCP/IP, allowing natural language commands for configuration, measurements, and waveform data retrieval.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wolog1/siglent-sds-mcp'

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