RIGOL MHO98 MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@RIGOL MHO98 MCPMeasure the frequency and peak-to-peak on CH1"
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.
RIGOL MHO98 MCP
RIGOL MHO98をUSB経由で操作するMCPサーバーです。MCP対応のAIクライアントから、オシロスコープの設定変更、波形・測定値の取得、FFT、通信デコードなどを扱えます。
実験中の操作を短くするため、設定の送信と測定を分けています。設定変更のたびに全設定を読み直したり、確認用の通信を追加したりしません。
実機の画面
以下は、CH1にプローブを接続し、本体の PROBE COMP 信号を入力して、このMCPの screenshot で取得した画面です。撮影日:2026-09-26。
矩形波を表示する
CH1を1 V/div、時間軸を200 µs/divに設定した表示例です。約1 ms周期の矩形波が見えます。

同じ信号をFFTで見る
MATH1の入力をCH1にして、Hann窓・dBV表示・0〜20 kHzでFFTを表示した例です。約1 kHzの基本波と高調波が見えます。撮影時の取得設定はHiRes・100 kポイントです。

Related MCP server: ScopeMCP
できること
現在、MHO98向けに 90ツールを登録しています。
用途 | 主な機能 |
入力・取り込み | CH1〜4、時間軸、トリガ、取得メモリ長、ハイレゾ、平均化 |
数値測定 | 振幅・周波数・時間差・位相・統計、DVM、カウンタ、カーソル |
波形の取得 | 波形データ取得、CSV出力、スクリーンショット |
演算・解析 | FFT、MATH演算、ヒストグラム、マスク、イベント検索 |
通信デコード | I2C、SPI、RS232、Parallel、CAN、LIN、IIS、FlexRay、MIL-STD-1553 |
信号発生 | 波形・周波数・振幅・変調・出力ON/OFF、Bode設定 |
その他 | デジタル入力、波形記録、参照波形、保存・読込み、表示設定 |
通信デコードや信号発生などは、本体に搭載された機能・オプションに依存します。接続して実際に確認した機器はMHO98です。
会話での操作例
MCPを登録したクライアントから、例えば次のように依頼できます。
CH2〜4をOFFにして、CH1をFFTで表示して。
取得メモリ長を100 kポイントにして。
ハイレゾモードを16 bitにして。
CH1のDVMをDC測定でONにして。
CH1の周波数とピーク・ツー・ピーク値を取得して。
CH1の波形をCSVに保存して。ツールは設定の送信結果と測定値を区別して返します。例えば sent: true, verified: false は、コマンドを送信したことを表します。本体の状態を確認したという意味ではありません。
設定の扱い
通常のCH設定は全項目を指定
set_channel は、対象CHに加えて以下の11項目を必須にしています。帯域制限などが以前の状態のまま残るのを避けるためです。
表示ON/OFF、帯域制限、反転、AC/DC/GND結合
縦軸スケール、オフセット、チャンネル間スキュー、微調整
ラベル表示、ラベル文字列、バイアス
不足がある呼出しは、オシロスコープに送る前に拒否します。値の確認のために本体を読みに行く処理はありません。
接続条件に依存する3項目は人が決める
入力インピーダンス・測定単位・プローブ倍率は、通常のCH設定に含めません。実機で人が設定するか、人が明示的に指示した場合だけ set_channel_input で変更します。
例えば「ACにして」という依頼から、AIが勝手に50 Ωを1 MΩに変更する扱いにはしていません。50 Ω入力はDC結合に限られるため、こうした条件の衝突は依頼者に伝えます。
読取りは結果に必要なものだけ
測定値を解釈するための測定元・モード・単位、波形を換算するためのプリアンブルなどは取得します。設定変更の前後の照合、自動エラー照会、自動再試行は行いません。診断が必要なときは専用の読取りツールを明示的に使います。
セットアップ
1. インストール
Python 3.13とuvを使う構成です。
git clone https://github.com/kitour/rigol-mho98-mcp.git
cd rigol-mho98-mcp
uv syncリポジトリが非公開の場合、cloneにはアクセスできるGitHubアカウントが必要です。
2. USBで接続
PCとMHO98をUSBで接続し、MHO98用の実行ファイルを起動します。
RIGOL_USB=1 \
RIGOL_USB_SERIAL=YOUR_MHO98_SERIAL \
RIGOL_OUTPUT_DIR=/absolute/path/to/output \
.venv/bin/rigol-mho98YOUR_MHO98_SERIAL は接続する本体のシリアル番号に置き換えてください。起動後は標準入出力でMCPクライアントと通信するため、単独で起動しても対話画面は表示されません。
3. MCPクライアントに登録
クライアントの設定形式に合わせて、次の実行ファイルと環境変数を指定します。
項目 | 値 |
実行ファイル |
|
|
|
| 接続するMHO98のシリアル番号 |
| 画像・CSVなどの保存先の絶対パス |
MHO98用のエントリーポイントは rigol-mho98 です。ソースを更新した後は、クライアント側のMCP接続を再起動すると変更が反映されます。
構成と資料
src/rigol_mcp/mho98/— MHO98向けの実装src/rigol_mcp/mho98/data/— SCPI実行用の構文・型・静的範囲docs/FAST_OPERATIONS.md— 通信と設定の設計docs/FEATURE_TRIAL.md— 実機で試した機能の記録docs/features/— 機能別の実装メモ
このリポジトリは開発中のスナップショットです。古いテスト・試験記録には変更前の仕様を扱うものもあります。現在の操作方針はこのREADMEと FAST_OPERATIONS.md を参照してください。
Available Tools
16 toolsautoscaleA
Run the scope's auto-setup (timebase, vertical scale, trigger). Takes a few seconds; call get_scope_state afterwards to see the resulting configuration. Do not call concurrently with any other rigol tool.
| Name | Required | Description | Default |
|---|---|---|---|
No 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 reveals the side effects (changes timebase, vertical scale, trigger), the expected duration, the concurrency constraint, and how to observe the result. This is rich 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?
Three sentences deliver the core action, the side-effect scope, timing, post-step, and a concurrency constraint without any redundancy. Every sentence earns its place and the main verb is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter tool with no output schema, the description fully explains what will happen, how long it takes, how to inspect the result, and the one critical operational warning. Nothing an agent needs to call this correctly is 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?
The tool has zero parameters, so the baseline is 4. The description does not need to explain parameter semantics because there are none.
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 names a specific verb-resource pair ('Run the scope's auto-setup') and enumerates exactly what the auto-setup covers: timebase, vertical scale, and trigger. This clearly distinguishes it from manual siblings like set_timebase and set_trigger.
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 gives clear operational guidance: it takes a few seconds, you should call get_scope_state afterwards, and you must not call it concurrently with any other rigol tool. It does not explicitly contrast with manual setup alternatives, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_errorA
Query the SCPI error queue. Returns the error if present, or 'No error' if clear. Do not call concurrently with any other rigol tool.
| Name | Required | Description | Default |
|---|---|---|---|
No 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 behavioral disclosure burden. It does well by specifying the two possible return values and warning about concurrency, which is a meaningful behavioral constraint. A minor gap is that it does not state whether querying clears the SCPI error queue, a known side-effect of such operations.
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 three terse sentences: the first names the action and resource, the second states return values, and the third provides a crucial concurrency warning. There is no redundant wording or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description covers how to invoke it and what to expect. It could be slightly more complete by noting whether the error queue is cleared on read, but the core information needed to call and interpret the tool is present.
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 and the schema already reflects this with an empty properties object. The description appropriately focuses on behavior rather than parameter details, matching the baseline expected for a parameterless tool.
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 a specific action ('Query'), a specific resource ('SCPI error queue'), and the expected behavior ('Returns the error if present, or 'No error' if clear'). This makes the tool's function immediately understandable and distinguishes it from the sibling measurement and control tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates this tool is for checking the error queue, and it provides an explicit usage restriction: 'Do not call concurrently with any other rigol tool.' It does not name sibling alternatives, but no listed sibling appears to offer an equivalent error-queue inspection function, so alternative routing is not needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cursor_valuesA
Read current cursor mode and all cursor readouts. AX_s and BX_s are time positions in seconds. inv_delta_x is 1/Δt — the frequency between the two cursors. Do not call concurrently with any other rigol tool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the tool is read-only ('Read'), defines output semantics (AX_s, BX_s as time, inv_delta_x as frequency), and adds a concurrency warning. It doesn't specify return format or error behavior, but the key behavioral aspects are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. The purpose is stated first, followed by field definitions and a critical warning. Every sentence earns its place.
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 parameters and no output schema, the description explains the main returned fields and includes the concurrency warning. It could mention what happens if cursors are not set or return an error, but for a simple read tool, it is reasonably 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?
No parameters exist, so schema coverage is trivially 100%. Baseline for 0 params is 4. The description adds value by explaining the meaning of the returned fields, aiding interpretation of the tool's output, which is appropriate given no output schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads current cursor mode and all cursor readouts, with specific output fields defined. It distinguishes from sibling set_cursors and measure tools by focusing on reading rather than setting or measuring.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when cursor values are needed and explicitly warns against concurrent calls with any other rigol tool, which is a critical usage constraint. It doesn't explicitly compare to alternatives, but the read-only nature is clear from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scope_stateA
Return a snapshot of the scope's current configuration: active channels (scale, offset, coupling, probe), timebase, and trigger. Call this at the start of a session to understand the current setup. Do not call concurrently with any other rigol tool.
| Name | Required | Description | Default |
|---|---|---|---|
No 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 implies a read-only operation ('snapshot') and explicitly discloses the concurrency restriction, which is a behavioral trait. It does not detail return format or error behavior, but for a simple getter this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste: the first states purpose and scope, the second gives usage context and a constraint. Every sentence earns its place, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description covers the essential purpose and usage. It lists the main fields returned (channels, timebase, trigger) but does not specify exact format or units. For a simple snapshot tool, this is reasonably complete, though a bit more detail on return structure would push it higher.
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, so the baseline for this dimension is 4 per the rubric. The description appropriately avoids explaining parameters since there are none.
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 returns a snapshot of the scope's current configuration, listing specific elements (active channels, timebase, trigger). This distinguishes it from sibling setter tools (set_channel, set_timebase, set_trigger) and getters like get_cursor_values, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit when-to-use guidance ('at the start of a session to understand the current setup') and a clear when-not constraint ('Do not call concurrently with any other rigol tool'). It does not name alternatives, but no sibling serves the same purpose, so this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_waveformA
Download and analyse the current waveform for a channel (NORM screen buffer, up to ~1000–1200 points depending on scope). Preferred over screenshot for inspecting the trace — the text analysis is cheaper and easier to reason over than an image. Stop or single-trigger the scope first for consistent data. By default returns a plain-text analysis: signal shape, frequency/period, amplitude, DC offset, cycle count, and data-quality warnings (e.g. mid-cycle edges, invalid frequency). Amplitude is judged against the channel's V/div: a trace filling under ~10% of the vertical screen is flagged as noise floor and its shape/frequency are not reported, and one filling under ~20% gets a low-amplitude warning (reduce V/div and re-capture for a clean signal). Set raw_data=true to get the full time/voltage JSON arrays instead. If the channel's display is OFF it is auto-enabled first (flagged in the warnings). After reading, act on any warnings — if FREQUENCY would be 9.9E37 widen the timebase; if edges are not near the DC mean, adjust offset so right edge = N×(period/2) − 6×scale. Do not call concurrently with any other rigol tool.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | ||
| raw_data | No | Return raw time/voltage JSON arrays instead of text analysis (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it delivers: it discloses the NORM screen buffer, point-count range, default textual analysis fields, noise-floor and low-amplitude thresholds, raw_data mode, auto-enabling of a disabled channel, and warning interpretation. It makes observable behavior and side effects explicit.
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 long but dense, front-loads the core purpose and key preference, then layers prerequisites, return behavior, thresholds, and post-read actions. Each sentence carries useful operational information for a complex oscilloscope tool, with no filler.
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 output schema and no annotations, the description fully covers invocation prerequisites, return content, edge cases, failure indicators, and follow-up actions needed to use the returned data correctly. It is complete enough for an agent to call this tool and interpret the result without external help.
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 covers only raw_data with a description and channel with an enum, while the tool description adds the important distinction that raw_data=true yields full time/voltage JSON arrays and clarifies that amplitude is judged against the channel's V/div. This compensates for the 50% schema description 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?
States a specific verb and resource: downloads and analyses the current waveform for a specific channel, and explicitly positions itself against screenshot by noting text analysis is cheaper and easier to reason over. The tool's purpose is unmistakable even before looking at the schema.
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?
Explicitly says when to prefer this tool over screenshot, gives the precondition to stop or single-trigger first, tells the agent to act on warnings, and warns not to call concurrently with any other rigol tool. This is actionable guidance for tool selection and invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
idnA
Identify the instrument and report connection details. Always returns the connection block (transport, RIGOL_USB/RIGOL_IP env vars, backend hint, resource string, session state, and the detected dialect driver — DS1000Z, DHO, …) followed by the scope's *IDN? string. If the *IDN? query fails, the connection block is still returned with the error — use it to spot LAN-vs-USB misconfig or an unreachable IP before assuming the scope itself is the problem. Call this first to verify connectivity and confirm the correct driver was selected. Do not call concurrently with any other rigol tool.
| Name | Required | Description | Default |
|---|---|---|---|
No 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 disclosing behavior. It does so thoroughly: it states that the tool always returns the connection block even if the *IDN? query fails, and that the error is included to aid troubleshooting. It also lists the contents of the connection block (transport, env vars, backend hint, resource string, session state, dialect driver) and warns against concurrent calls. This goes beyond a simple 'returns IDN' statement and gives the agent useful 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 somewhat long but every sentence earns its place. It front-loads the purpose and return value, then addresses the failure scenario and the concurrency constraint. It is well-structured with clear cause-effect reasoning, and there is no redundancy or filler.
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 that there is no output schema and no annotations, the description must fully inform the agent about what to expect. It does: it lists the connection block contents, explains the *IDN? query, describes failure behavior, and gives ordering guidance. An agent can call this tool confidently without needing to inspect any other metadata. This is complete for a diagnostic tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing for the description to add beyond the schema (which already covers everything). The baseline for 0 parameters is 4, and the description appropriately does not waste space on parameter details. It focuses instead on output and usage, which is correct.
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: 'Identify the instrument and report connection details.' It specifies the resource (instrument connection) and the action (identify/report), and distinguishes itself from the sibling tools, which are all measurement/control operations. The tool is positioned as a connectivity/diagnostic first step, so an agent can immediately recognize its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs when to call it: 'Call this first to verify connectivity and confirm the correct driver was selected.' It also provides a when-not-to-call constraint: 'Do not call concurrently with any other rigol tool.' Additionally, it explains how to interpret failures, telling the agent to check LAN-vs-USB misconfig or unreachable IP before assuming the scope is broken. This is clear, actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measureA
Query a single-source built-in measurement on a channel. Preferred over screenshot for reading values — numeric results are cheaper and easier to analyse than an image. For stable readings: on DS1000Z, stop acquisition first. On DHO, keep acquisition running — the DHO measurement engine only populates item values from live acquisitions; some items (VMAX/VMIN/VTOP/FREQUENCY/…) return 9.9E37 if first queried on a stopped scope. channel: CHAN1–CHAN4. item: VMAX, VMIN, VPP, VTOP (pulse top flat level, histogram-derived — not the same as VMAX), VBASE (pulse base flat level — not the same as VMIN), VAMP (=VTOP−VBASE — not the same as VPP=VMAX−VMIN), VAVG, VRMS (RMS over screen window), PVRMS (RMS over one period), VUPPER/VMID/VLOWER (timing thresholds at 90%/50%/10% of VAMP by default), VARIANCE (statistical variance of voltage samples), FREQUENCY, PERIOD, PWIDTH, NWIDTH, PDUTY, NDUTY, RTIME, FTIME, OVERSHOOT, PRESHOOT, PSLEWRATE, NSLEWRATE (slew rate, V/s), TVMAX, TVMIN (time position at which VMAX/VMIN occurs), MAREA (waveform area, V·s over screen window), MPAREA (area per period, V·s), PPULSES, NPULSES, PEDGES, NEDGES. A return value of 9.9E37 is the scope's invalid/overflow sentinel — it means the measurement could not be computed (e.g. FREQUENCY returns 9.9E37 when the timebase is too narrow to show a complete cycle; widen scale and retry); such values come back annotated as invalid/overflow. If the channel's display is OFF it is auto-enabled first (noted in the result). For delay or phase between two channels use measure_between. Do not call concurrently with any other rigol tool.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | Measurement item (e.g. FREQUENCY, VPP, VRMS) | |
| channel | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden and does so thoroughly: it documents the 9.9E37 invalid sentinel and its meaning, explains that display OFF is auto-enabled, describes model-dependent behavior, and warns against concurrent calls. This is exemplary 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 long but every segment earns its place: purpose is front-loaded, followed by operational caveats, a complete item enumeration, and sentinel semantics. The item list is dense but scannable, and no information is redundant or filler.
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 output schema and no annotations, the description fully equips an agent to call the tool correctly: it covers return values, invalid-value handling, channel/item choices, device-specific setup, side effects, concurrency, and alternatives. There are no obvious missing details for successful invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, but the description fully compensates by enumerating every valid item and clarifying subtle semantics (e.g. VTOP is histogram-derived, VAMP = VTOP−VBASE, VUPPER/VMID/VLOWER are thresholds). It also lists the channel range CHAN1–CHAN4, adding meaning far beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Query a single-source built-in measurement on a channel.' It also distinguishes itself from the screenshot tool ('Preferred over screenshot for reading values') and from measure_between via 'single-source,' making sibling differentiation immediate and clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance (preferred over screenshot for numeric readings), model-specific prerequisites (stop acquisition on DS1000Z, keep running on DHO), a routing rule for two-channel measurements ('use measure_between'), and a concurrency prohibition. This leaves no ambiguity about when the tool should be called.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
measure_betweenA
Query a two-source delay or phase measurement between two channels. source1 is the reference channel, source2 is the measured channel. DS1000Z items: RDELAY (rising-edge delay, seconds), FDELAY (falling-edge delay, seconds), RPHASE (rising-edge phase, degrees), FPHASE (falling-edge phase, degrees). DHO series exposes a 4-way matrix: RRDELAY/RFDELAY/FRDELAY/FFDELAY and RRPHASE/RFPHASE/FRPHASE/FFPHASE (first letter = source1 edge, second = source2 edge). On DHO the DS1000Z names are auto-mapped to their homogeneous equivalents (RDELAY→RRDELAY, FDELAY→FFDELAY, RPHASE→RRPHASE, FPHASE→FFPHASE). For stable readings: on DS1000Z, stop acquisition first. On DHO, keep acquisition running (see measure for details). A 9.9E37 result is the scope's invalid/overflow sentinel and comes back annotated; any source channel whose display is OFF is auto-enabled first (noted in the result). Do not call concurrently with any other rigol tool.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| source1 | Yes | Reference channel | |
| source2 | Yes | Measured channel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so thoroughly. It discloses the 9.9E37 invalid sentinel, auto-enabling of off channels, platform-specific mapping behavior, and the concurrency restriction. These are exactly the non-obvious behaviors an agent needs to know before calling.
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 long but every sentence carries operational value: purpose, platform differences, sentinel behavior, side effects, and concurrency warning. It is front-loaded with the core purpose and then layers necessary detail without repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is remarkably complete. It covers parameter semantics, platform-specific behavior, invalid-result handling, side effects, and concurrency constraints. An agent has enough information to invoke the tool correctly and interpret unusual results.
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 covers source1 and source2 with descriptions, but `item` has no description. The description compensates by explaining the DS1000Z item names, the DHO 4-way matrix, and the auto-mapping between them. This is essential semantic detail beyond the raw enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Query a two-source delay or phase measurement between two channels.' It immediately distinguishes source1 as reference and source2 as measured, and the item list clarifies exactly what is being measured. This clearly differentiates it from sibling tools like measure or get_cursor_values.
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 gives clear operational context: stop acquisition on DS1000Z, keep it running on DHO, and never call concurrently with other rigol tools. It references `measure` for details, implying a relationship, but it does not explicitly state when to choose this tool over a sibling. Still, the context is strong enough for an agent to use it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runA
Start continuous acquisition. Returns trigger status after the command. Do not call concurrently with any other rigol tool.
| Name | Required | Description | Default |
|---|---|---|---|
No 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 usefully states that the command 'Returns trigger status' and warns against concurrent calls. However, it does not explain what trigger status means, whether acquisition continues indefinitely, how to stop it, or what side effects occur on the instrument state.
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 only two sentences and every clause earns its place. It front-loads the core action, then immediately provides the return behavior and the most critical usage constraint. No fluff or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter command, the description covers the basic start action, return value, and concurrency warning. However, it leaves out meaningful operational context such as the ongoing nature of acquisition, how to terminate it (presumably via 'stop'), and what form the trigger status takes. These are not required for invocation but would help an agent reason about sequencing and side effects.
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, so there is no parameter information for the description to add. The baseline for zero-parameter tools is 4, and the description appropriately avoids padding with irrelevant parameter details.
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: 'Start continuous acquisition.' The word 'continuous' implies contrast with the sibling 'single' tool and distinguishes the scope of the operation. However, it does not explicitly name that alternative or provide any further differentiation from other acquisition-related siblings.
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 gives an explicit operational warning: 'Do not call concurrently with any other rigol tool.' It also implies appropriate use through 'continuous acquisition,' which contrasts with the sibling 'single' tool. It does not explicitly state when to prefer this over specific alternatives, but the continuous-vs-single distinction provides reasonable context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshotA
Capture a screenshot of the oscilloscope display. Returns the image and the absolute path where the PNG was saved. This is a fallback, not the primary way to read the scope: for numeric readings use measure/measure_between and for trace data use get_waveform — they return compact structured text that is faster and cheaper to reason over than an image. Reach for screenshot only when a genuinely visual check is needed (on-screen menus/UI state, cursor placement, display rendering, or confirming what a human sees). Do not call concurrently with any other rigol tool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral burden. It discloses the capture action, the return format (image plus absolute path), the fallback nature of the tool, and a concurrency constraint. This is more than sufficient for a zero-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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first states the action and return value, the second contrasts with faster/cheaper siblings, and the third gives precise visual-use cases plus a concurrency warning. Front-loaded and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers what an agent needs: what the tool does, what it returns (since there is no output schema), when to choose it over siblings, when it is a fallback, and the concurrency restriction. Nothing essential is missing for a no-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is an empty object, so there is nothing for the description to clarify. Baseline 4 applies; no parameter-level documentation is needed or expected.
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 'Capture' and the resource 'oscilloscope display,' and specifies the return value (image and PNG absolute path). It also distinguishes the tool from siblings by positioning it as a fallback and pointing to measure/measure_between and get_waveform for numeric/trace 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?
Provides explicit when-to-use and when-not-to-use guidance: use it only for visual checks such as menus, cursor placement, and display rendering, and avoid it for numeric or trace data where siblings are preferable. Even includes a concurrency exclusion ('Do not call concurrently with any other rigol tool').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_channelA
Configure a channel. Only specified parameters are changed. channel: CHAN1–CHAN4. scale_v_div: V/div. offset_v: volts. coupling: AC, DC, or GND. probe: attenuation ratio (1, 10, 100, …). Parameter names match get_scope_state output for easy round-tripping. Returns the resulting channel configuration. Do not call concurrently with any other rigol tool.
| Name | Required | Description | Default |
|---|---|---|---|
| probe | No | Probe attenuation ratio (e.g. 1, 10, 100) | |
| channel | Yes | ||
| display | No | Turn channel on/off | |
| coupling | No | ||
| offset_v | No | Vertical offset in volts | |
| scale_v_div | No | Vertical scale in V/div |
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 that it performs a partial configuration, returns the resulting channel configuration, and must not be called concurrently with other rigol tools. These are meaningful behavioral details beyond what the schema alone reveals.
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 dense and well organized: a one-line summary, a key semantic guarantee, a compact parameter reference, a round-tripping note, and a concurrency warning. Every sentence earns its place without redundant prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter configuration tool with one required parameter and no output schema, the description covers essential operational context: units, allowed values, partial update behavior, return information, and concurrency constraints. It is complete enough for an agent to call correctly, though output shape is left unspecified.
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 67%, and the description adds value by providing units (V/div, volts), coupling enum values (AC, DC, GND), and probe attenuation examples (1, 10, 100). It compensates for the schema's undocumented channel and coupling properties while reinforcing the round-tripping intent.
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 configures a channel and enumerates the specific settable fields (scale_v_div, offset_v, coupling, probe). This distinguishes it from sibling tools like set_timebase and set_trigger, which operate on different scope subsystems.
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 phrase 'Only specified parameters are changed' clarifies partial-update semantics, and 'Parameter names match get_scope_state output for easy round-tripping' gives a clear usage pattern. The concurrency warning adds an important operational constraint, though it does not explicitly state when to prefer a sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_cursorsA
Set cursor mode and/or X positions. mode: OFF, MANUAL (fixed time positions, reads voltage at those X points), TRACK (cursors snap to and follow the waveform at the X position). Omit mode to keep current mode. ax/bx: cursor A/B time positions in seconds. Returns the resulting cursor readouts. Do not call concurrently with any other rigol tool.
| Name | Required | Description | Default |
|---|---|---|---|
| ax | No | Cursor A X position in seconds | |
| bx | No | Cursor B X position in seconds | |
| mode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It states that the tool returns resulting cursor readouts and warns not to call it concurrently with any other rigol tool, which are useful disclosures. However, it does not mention potential side effects (e.g., whether the scope state is permanently changed), error conditions, or what happens if invalid mode values are provided. The return format is also vague ('resulting cursor readouts').
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 three sentences with no fluff. It front-loads the primary action, explains modes inline, and includes a critical concurrency constraint. Every sentence serves a purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description provides essential information: what it does, how modes behave, that it returns readouts, and a concurrency restriction. It does not cover error handling or the exact structure of the returned readouts, but given the simplicity of the tool and the presence of sibling tools for reading, the description is largely complete. A minor gap is not linking to get_cursor_values for reading.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description adds significant meaning for the mode parameter by explaining what each mode (OFF, MANUAL, TRACK) does, which goes beyond the enum. For ax/bx, the description clarifies they are time positions in seconds, though the schema already states this. The phrase 'and/or' and the note about omitting mode add practical usage semantics not in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets cursor mode and/or X positions, using a specific verb (set) and resource (cursors). It explains the three modes in detail, distinguishing this from get_cursor_values which reads values rather than sets them. The purpose is unambiguous and well-scoped.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the modes and that omitting mode keeps the current mode, which gives some context on when to use each option. However, it does not explicitly compare this tool to siblings like get_cursor_values or measure, nor does it state conditions for when this tool is preferred over others. The concurrency warning is a usage constraint but not a tool-selection guideline.
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 horizontal timebase. scale_s_div: seconds per division (e.g. 0.001 for 1 ms/div). offset_s: shifts the display window; time_start = offset_s − 6×scale_s_div, time_end = offset_s + 6×scale_s_div. Trigger (t=0) is always a zero crossing when using edge trigger. To align the right edge to a zero crossing at time T: set offset_s = T − 6×scale_s_div. To put the trigger at the left edge of the screen: set offset_s = +6×scale_s_div. Parameter names match get_scope_state output for easy round-tripping. Returns the resulting timebase configuration. Do not call concurrently with any other rigol tool.
| Name | Required | Description | Default |
|---|---|---|---|
| offset_s | No | Trigger offset in seconds | |
| scale_s_div | No | Time per division in seconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses the trigger zero-crossing behavior, the time_start/time_end calculation, the return value, parameter-name round-tripping with get_scope_state, and a concurrency restriction. This is rich, non-obvious 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 dense but every sentence earns its place: core action, parameter semantics, formulas, alignment examples, round-tripping note, return behavior, and concurrency warning. It is front-loaded with the main purpose and structured logically.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with no annotations and no output schema, the description is remarkably complete. It covers what the tool does, how parameters interact, what the return value is, and a critical concurrency constraint. An agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds substantial meaning beyond the schema: exact formulas, an example value, alignment procedures, and the relationship to get_scope_state. This makes the parameters far more actionable than their bare 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 opens with a specific verb and resource: 'Set the horizontal timebase.' It clearly differentiates from sibling tools like set_trigger, set_channel, and set_cursors by focusing on the timebase axis. The scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides detailed how-to guidance for alignment scenarios (right edge, left edge), but it does not explicitly state when to use this tool versus related siblings such as set_trigger or autoscale. Usage context is implied rather than explicitly contrasted with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_triggerA
Configure edge trigger. source: CHAN1–CHAN4 or EXT. slope: POS (rising), NEG (falling), or RFAL (either). level: trigger level in volts. Returns the resulting trigger configuration. Do not call concurrently with any other rigol tool.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Trigger level in volts | |
| slope | No | ||
| source | No | Trigger source, e.g. CHAN1 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must carry the full burden. It reports that the tool returns the resulting trigger configuration and warns against concurrent calls, which is helpful. However, it does not disclose any side effects, reversibility, error handling, or required permissions. It is adequate but not exhaustive, so a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose, and includes all necessary parameter details and a concurrency constraint without excess. It is efficient and well structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple with three parameters and no output schema. The description covers purpose, parameters, return value, and concurrency. It could mention error behavior or prerequisites, but for this scope it is fairly complete. A 4 reflects that it is better than minimal but not exhaustive.
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 schema: it specifies the source as 'CHAN1–CHAN4 or EXT,' while the schema only gives an example, and it explains the slope enum values (POS rising, NEG falling, RFAL either) which the schema lacks. This compensates for the moderate schema coverage (67%), so a 4 is warranted.
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 function as 'Configure edge trigger,' which is a specific verb and resource. It distinguishes from sibling tools like set_channel, set_timebase, and set_cursors by focusing on edge trigger configuration. The parameter list further clarifies the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when edge trigger configuration is needed, but it does not explicitly compare to alternatives or state when not to use. It does include a concurrency warning ('Do not call concurrently with any other rigol tool'), which is a usage constraint but not about tool selection. Thus, usage guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
singleA
Arm the scope for a single acquisition; stops automatically after one trigger event. Returns trigger status. Note: acquisition does not complete until a trigger occurs — call stop or check trigger status before reading measurements. Do not call concurrently with any other rigol tool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does so thoroughly. It discloses the asynchronous arming behavior, automatic stop after one trigger, return of trigger status, the fact that acquisition is incomplete until a trigger, and a concurrency restriction. This is strong behavioral disclosure beyond what the schema or annotations could provide.
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 compact and front-loaded with the core action, then adds the most important behavioral caveats and the concurrency warning. Every sentence contributes essential information without repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the key aspects an agent needs: what the tool does, its async behavior, when it completes, what it returns, and a concurrency restriction. Since there is no output schema, the description mentions 'trigger status' but does not specify possible values or structure, which is a minor but real gap.
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, so the baseline is 4. The description does not need to explain parameter semantics, and there is no ambiguity introduced by the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Arm the scope for a single acquisition') and adds meaningful behavior: it stops automatically after one trigger event and returns trigger status. This is clear, though it does not explicitly contrast itself with sibling tools like run or stop to fully differentiate them.
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 gives concrete operational guidance: acquisition does not complete until a trigger occurs, and the user should call stop or check trigger status before reading measurements. It also explicitly warns against concurrent use with other rigol tools. It stops short of naming alternative tools or conditions for choosing this over run, but the guidance is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stopA
Stop acquisition and freeze the display. Use before reading measurements or cursors for stable values. Returns trigger status after the command. Do not call concurrently with any other rigol tool.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 core behavior (stopping acquisition, freezing display), the return value ('Returns trigger status after the command'), and a concurrency restriction. It does not detail edge cases like idempotency or what happens if already stopped, but it is transparent about the main effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the action, the usage context, the return value, and a critical concurrency warning. Information is front-loaded and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with no annotations and no output schema, the description covers purpose, usage timing, return behavior, and a concurrency constraint. Nothing essential is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100%, so the schema fully documents the input surface. The description adds no parameter details, but none are needed. Baseline 4 for a no-parameter tool is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Stop acquisition and freeze the display.' This clearly identifies the tool's action and distinguishes it from siblings like run and single without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance: 'Use before reading measurements or cursors for stable values.' It also provides a clear when-not-to-use constraint: 'Do not call concurrently with any other rigol tool.' This is strong, actionable usage direction.
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.
16 tool updates
v0.1.0- First observed
autoscale - First observed
check_error - First observed
get_cursor_values - First observed
get_scope_state - First observed
get_waveform - First observed
idn - First observed
measure - First observed
measure_between - First observed
run - First observed
screenshot - First observed
set_channel - First observed
set_cursors - First observed
set_timebase - First observed
set_trigger - First observed
single - First observed
stop
TDQS
Scored across 16 tools
Each tool targets a distinct function: acquisition control (run/stop/single/autoscale), configuration (set_channel/set_timebase/set_trigger), measurement (measure/measure_between), data retrieval (get_waveform/get_scope_state/get_cursor_values), and utilities (idn/check_error/screenshot). Even similar tools like run/stop/single are clearly differentiated by their descriptions.
All tools use snake_case with clear verb prefixes (get_, set_, check_, measure_) and action verbs (run, stop, single, autoscale). Minor inconsistency: some tools are single verbs without object nouns, but the pattern is predictable and readable.
16 tools is slightly above the ideal range but justified for a complex oscilloscope with acquisition, configuration, measurement, and diagnostic capabilities. Each tool has a defined role and none are redundant.
The surface covers all core oscilloscope workflows: acquisition, channel/timebase/trigger configuration, single and between-channel measurements, waveform capture, cursor operations, and diagnostics. Minor gaps like non-edge trigger types (e.g., pulse, video) exist but are not essential for basic usage.
Maintenance
Related MCP Connectors
Protocol-native energy infrastructure orchestration for AI data centers. Provides 46 MCP tools across 8 grid protocols (IEC-61850, DNP3, Modbus, OCPP, OpenADR, IEEE 2030.5, IEC 60870-5-104, ICCP) with 5 core API primitives: connect, dispatch, settle, comply, and intel. Enables AI agents to programmatically interact with substations, grid interfaces, and energy assets for real-time workload-grid coordination.
Governed AI agent skills — one library, distributed to devs and exposed to remote agents over MCP.
Connect any AI agent to 1,000+ apps and 27,000+ actions through one remote MCP server (OAuth).
15MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP server for controlling Rigol oscilloscopes from an AI assistant. It translates MCP tool calls into SCPI commands over PyVISA.1MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that connects AI assistants to the Owon DS1102 oscilloscope, enabling waveform capture, measurement retrieval, and remote control of scope settings.GPL 3.0
- FlicenseNot gradedqualityDmaintenanceEnables AI to control RIGOL DHO/HDO oscilloscopes and SIGLENT SDG1000X signal generators via SCPI commands through a local stdio MCP server.1-
- AlicenseAqualityBmaintenanceMCP server for controlling and reading Rigol DHO800/DHO900 oscilloscopes over LAN via SCPI commands.112MIT