MHO98 MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MHO98_DATA_DIR | No | Directory where waveform CSV/NPZ files, screenshots, and settings files are saved. | ./data |
| MHO98_RESOURCE | No | VISA resource string used to connect to the Rigol MHO98 oscilloscope. For raw TCP socket, e.g. TCPIP0::169.254.112.67::5555::SOCKET; for USBTMC, e.g. USB0::0x1AB3::0x****::***::INSTR. | TCPIP0::169.254.112.67::5555::SOCKET |
| MHO98_SOURCE_IP | No | Local source IP address to bind when the instrument uses a link-local address (169.254.x.x) and the OS would otherwise route traffic to the primary NIC (notably on macOS direct cable connections). Default is auto-detected. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_idnA | Query instrument identity (*IDN?): manufacturer, model, serial, firmware. |
| get_statusA | One-stop instrument snapshot: identity, run state, trigger status, sample rate, memory depth, acquisition settings, enabled channels, LAN status and pending errors. |
| get_errorsB | Read the instrument error queue (:SYSTem:ERRor?). Returns up to 20 entries. |
| resetA | Send *RST: restore default instrument settings. |
| clear_statusB | Send *CLS: clear event registers and error queue. |
| self_testA | Run instrument self-test (*TST?). 0 = pass, 1 = failure (check errors). |
| set_systemA | Misc system settings (:SYSTem section 3.24). language: SCHinese|TCHinese|KORean|JAPanese|ENGLish|GERMan|PORTuguese| POLish|FRENch|RUSSian|SPAN|THAI|INDonesian (short readback codes like ENGL or SCH are accepted as aliases) power_on: LATest|DEFault (config recalled at power-on) key_lock: lock front panel; low_power: 1 W standby datetime: 'YYYY-MM-DD hh:mm:ss' sets scope clock show_time: display the system time on screen (:SYSTem:STIMe) aux_output: TOUT|PFAil — signal on the rear [AUX OUT] connector power_status: DEFault|OPEN — OPEN boots directly after power application auto_key: enable/disable the front-panel AUTO key (:SYSTem:AUToscale) |
| get_system_configB | Read back every writable :SYSTem setting (section 3.24): beeper, language, power-on recall mode, front-panel lock, low-power mode, on-screen clock, AUX OUT type, power status and AUTO-key enable. |
| get_system_infoA | System info: firmware, installed modules/options, hardware layout, LAN parameters. Note: :SYSTem:OPTion:STATus? / :OPTion:VALid? hang on firmware 00.01.00
and are therefore skipped (see |
| get_keyboard_checkA | Front-panel key/knob self-test results (:SYSTem:KEYBoard:CHECk?). Only meaningful after running the key test on the instrument (Utility > Self Check > Key Test); untested keys report false. Returns the parsed result map plus the raw string. |
| get_ieee488_statusA | Read the IEEE488.2 status registers (*ESR?, *STB?) and their enable masks (*ESE?, *SRE?), with named-bit decoding. *ESR? reads-and-clears the standard event register; *STB? clears the status byte. Bits follow manual tables 3.153/3.154. |
| set_ieee488_enableA | Set IEEE488.2 enable registers (*ESE, *SRE) and optionally arm *OPC. event_enable: bit sum (0..255) for the standard event register
(OPC=1, QYE=4, DDE=8, EXE=16, CME=32, PON=128 — table 3.153).
service_enable: bit sum (0..255) for the status byte register
(ERR queue=4, QSD=8, MAV=16, SES=32, MSS=64, OSR=128 — table 3.154).
signal_operation_complete: send *OPC so bit 0 of *ESR latches when all
pending operations finish (poll with |
| get_option_statusA | Query software-option installation (:SYSTem:OPTion:STATus? or, with valid=True, :SYSTem:OPTion:VALid?). WARNING: on firmware 00.01.00 BOTH queries never answer and hang the
connection. The tool therefore does nothing unless opt_in=True is passed
explicitly; the default call returns a option_type: BND|AFG100|AFG50|AUDio|CAN-FD|FLEX|AERO|RLU-05|BWU03T05| BWU03T08|BWU05T08. Option install/uninstall commands exist but are deliberately not exposed (licensed, destructive). |
| reboot_systemA | Reset the instrument to power-on state (:SYSTem:RESet). This restarts the scope operating system: the current configuration is
lost and the LXI/USB connection may drop for ~30 s. Not the same as
|
| get_datetimeA | Read the instrument clock (:SYSTem:DATE? and :SYSTem:TIME?), returned as date 'YYYY-MM-DD', time 'HH:MM:SS' and a combined string. |
| set_datetimeA | Set the instrument clock and read it back (:SYSTem:DATE / :SYSTem:TIME). datetime: 'YYYY-MM-DD hh:mm:ss' (24-hour). Raises ValueError on bad format or out-of-range fields (year 1900..2100). |
| save_setupB | Save the complete instrument setup (:SYSTem:SETup?) to a local file. |
| load_setupB | Load a setup file previously written by |
| scpiA | Escape hatch: send any SCPI command to the instrument. Commands containing '?' are queried and the text/binary answer returned. Binary answers are saved to a file (never inlined into the response). |
| wait_completeB | Block until all pending operations finish (*OPC?). use_wai: also send *WAI first — the IEEE488.2 wait-to-continue command. On this firmware *WAI is a compatibility no-op, kept for completeness. |
| get_lan_configA | Read the full LAN configuration. Returns IP address, subnet mask, gateway, DNS, DHCP server, MAC, the DHCP/Auto-IP/Static(mANual)/mDNS mode switches (as booleans), hostname, description, link status and the VISA resource string. visa_type: USB|LXI|SOCKet — address type for :LAN:VISA? (default LXI). Link status values: UNLINK, CONNECTED, INIT, IPCONFLICT, BUSY, CONFIGURED, DHCPFAILED, INVALIDIP, IPLOSE. |
| set_lanA | Configure the LAN interface (section 3.14). ip/gateway/dns: dotted-quad, first octet 0..223 (not 127), others 0..255; mask: dotted-quad with every octet 0..255. Static addresses only apply when DHCP and Auto IP are off and manual (static) mode is on. The three IP modes cannot all be off at once (firmware rule). dhcp/auto_ip/manual/mdns: booleans; hostname/description: printable ASCII. apply: send :LAN:APPLy afterwards to activate all pending LAN settings. extra: only documented :LAN keywords are accepted, e.g. {"HOST:NAME": "scope1"} → :LAN:HOST:NAME scope1. |
| save_image_on_instrumentA | Store the current screen image on the instrument's own storage (:SAVE:IMAGe ). path: e.g. "C:/shot.png" (internal disk) or "D:/shot.bmp" (USB storage). Suffix must be .png, .bmp or .jpg; filename max 26 characters. |
| save_waveform_on_instrumentA | Store the screen waveform on the instrument's own storage (:SAVE:WAVeform ). Suffix .bin or .csv; filename max 26 characters. |
| save_memory_waveform_on_instrumentB | Store the full-memory waveform on the instrument's own storage (:SAVE:MEMory:WAVeform ). Suffix .bin, .csv or .wfm; filename max 26 characters. |
| save_setup_on_instrumentA | Store the current setup as a .stp file on the instrument's own storage (:SAVE:SETup ). Filename max 26 characters. |
| save_mask_on_instrumentA | Store the pass/fail mask as a .pf file on the instrument's own storage
(:SAVE:MASK ). Reload it with |
| load_setup_on_instrumentB | Load a .stp setup file from the instrument's own storage (:LOAD:SETup ). |
| load_mask_on_instrumentA | Load a .pf mask file from the instrument's own storage (:LOAD:MASK ). |
| get_save_statusA | Query the storage state (:SAVE:STATus?). Returns done=True when the previous saving operation has completed (firmware returns 1). |
| configure_saveA | Image/file saving options. invert: invert colors when saving images; color: COLor|GRAY; image_format: PNG|BMP|JPG; header: print model + date banner on images; overlap: overwrite same-name files; prefix: default filename prefix (max 16 chars, no extension); pathname: default save directory on the instrument, e.g. "C:/new". extra: only documented :SAVE option keywords, e.g. {"PREFix": "Rigol"}. |
| get_save_configA | Read back all :SAVE options (image invert/color/format/header, overwrite mode, filename prefix, storage path, storage status). |
| get_screenshot_dataA | Fetch the current screen bitmap via :SAVE:IMAGe:DATA? and write it to a LOCAL file under MHO98_DATA_DIR (alternative to the display subsystem's :DISPlay:DATA? screenshot). Only path + size are returned, never the blob. The image honors the :SAVE:IMAGe:* options (color/invert/header/format,
see |
| configure_smbB | Configure SMB (Windows share) file saving. server_path: "\192.168.1.5\Share" (IP address + English-letters share name); username/password: printable ASCII, no Chinese characters; autoconnect: reconnect the share at boot. |
| smb_connectA | Connect the configured SMB share (:SAVe:SMB:CONNect).
Check the result with |
| smb_disconnectB | Disconnect the SMB share (:SAVe:SMB:DISConnect). |
| get_smb_statusA | SMB share connection state (:SAVe:SMB:CONState?). connected=True when 1. |
| get_smb_configA | Read back the SMB share configuration: server path, user name, password, auto-connect-at-boot flag and the live connection state. |
| set_run_stateA | Run control. state: RUN | STOP | SINGLE (single acquisition, arm) | FORCE (force trigger now) | CLEAR (clear screen) hotkeys: True routes RUN|STOP|SINGLE through :TIMebase:HOTKeys, the front-panel hotkey variant of the same commands (3.26.10); FORCE and CLEAR have no hotkey equivalent. |
| autoscaleB | Autoset with options, then execute :AUToset. enable_channels: True = only test the currently enabled channels; False = scan CH1..CH4 in sequence and enable the ones carrying signals view_overlap: True = stack channel waveforms; False = tile them top-to-bottom on the screen peak_search: peak-peak priority (best for signals with a large DC shift) keep_coupling: keep the channel coupling (else DC is applied) lock_timebase: lock the AUTO key, i.e. disable the AUTO function (manual 3.2.6; :AUToset:ENAble False is the equivalent master switch) |
| set_autoset_optionsA | Configure the AUTO (autoset) options WITHOUT executing an autoset. Same parameters as autoscale(), plus: enable: master on/off of the AUTO function (:AUToset:ENAble, 3.2.7); False disables :AUToset just like lock_timebase=True |
| get_autoset_optionsA | Read back the AUTO (autoset) option states (all return 0 or 1). |
| set_channelA | Configure an analog channel (CH1..CH4). Only given parameters are changed. scale: V/div (1 mV..10 V/div at 1 MΩ/1X, 200 µV..1 V/div at 50 Ω/1X; range scales with the probe ratio) offset: vertical offset in V (range depends on scale and impedance) coupling: AC|DC|GND probe: attenuation ratio 0.001..50000 (discrete 1-2-5 steps plus 15-series values; custom ratios allowed) bw_limit: OFF|ON|20M|250M impedance: OMEG (1 MΩ) | FIFTy (50 Ω); accepts 1M/50 aliases position: vertical position (bias voltage) in V, per manual 3.6.14 label: channel label text; show_label: display the label vernier: fine adjustment of the vertical scale units: WATT|AMPere|VOLTage|UNKNown tcal: delay calibration time in s, -100 ns..100 ns |
| get_channelC | Read back the configuration of an analog channel. |
| get_channel_fullA | Read back the complete configuration of an analog channel. Adds the vernier (fine adjustment), delay calibration (TCALibrate, in s) and label visibility queries to get_channel(). |
| set_timebaseB | Horizontal system. scale: s/div of MAIN timebase; offset: trigger position shift in s; mode: MAIN|XY|ROLL; delayed timebase via delay_* parameters. roll: auto-ROLL mode (enter ROLL automatically at >= 50 ms/div) horizontal_reference_mode: CENTer|LB|RB|TRIG|USER (expansion reference used when the timebase changes) horizontal_reference_position: user-defined reference position, integer -500 (left edge) .. 500 (right edge) vernier: fine adjustment of the horizontal scale xy_enable: XY mode on/off (alternative to mode="XY") xy_x/xy_y: XY source channels, 1..4 (accepts 3, 'CH3' or 'CHANnel3') xy_grid: FULL|HALF|NONE grid of the XY display |
| get_timebaseC | Read back the horizontal system configuration. |
| get_timebase_fullA | Read back the complete horizontal system configuration. Adds the horizontal reference mode/position, vernier and XY-mode (enable, X/Y sources, grid) queries to get_timebase(). |
| set_acquireA | Acquisition system. type: NORMal|PEAK|AVERages|HRESolution memory_depth: AUTO|1k|10k|100k|1M|10M|25M|50M|100M|125M|200M|250M|500M (numeric equivalents like 1e6 or 25000000 are normalized to the mnemonic; max 500 Mpts single-channel, 250 Mpts half, 125 Mpts full) averages: 2..65536, power of two (AVERages type only; the instrument rounds non-power-of-two values down, this wrapper rejects them) bits: 12|14|16 (14|16 in HRESolution mode, 12 in the other modes) |
| get_acquireA | Read back acquisition settings incl. current sample rate. |
| set_trigger_commonA | Trigger-wide settings (apply to the current trigger type). mode: EDGE|PULSe|SLOPe|VIDeo|PATTern|DURation|TIMeout|RUNT|WINDow|DELay| SETup|NEDGe|RS232|IIC|SPI|CAN|LIN|FLEXray|IIS|M1553 (SETup = the setup&hold trigger) sweep: AUTO|NORMal|SINGle coupling: AC|DC|LFReject|HFReject (edge trigger, analog source only) holdoff: 8 ns .. 10 s (unavailable for VIDeo/TIMeout/NEDGe/serial types) noise_reject: analog-channel trigger sources only |
| get_trigger_commonD | – |
| get_trigger_statusB | Trigger status: TD = triggered, WAIT = waiting, AUTO = auto. |
| get_trigger_positionA | Trigger position in the internal memory (:TRIGger:POSition?, query-only). |
| get_trigger_configA | Read back the full configuration of one trigger type (all its queries). trigger_type: any :TRIGger:MODE value (EDGE, PULSe, SLOPe, VIDeo, PATTern, DURation, TIMeout, RUNT, WINDow, DELay, SETup, NEDGe, RS232, IIC, SPI, CAN, LIN, FLEXray, IIS, M1553) or COMMON for the trigger-wide settings (mode/sweep/holdoff/coupling/nreject/status/position). level_source: channel used for the PATTern/DURation per-channel level query (':LEVel? ' per the manual), e.g. 'CH2'. |
| set_trigger_edgeB | Edge trigger (most common). Switches TRIGger:MODE to EDGE. source: CH1..CH4 / D0..D15; slope: POSitive|NEGative|RFALl; level: volts (analog: ±4.5×scale−offset; digital: ±15 V) |
| set_trigger_pulse_widthC | Pulse width trigger. polarity: POSitive|NEGative; when: GREater|LESS|GLESs (greater/less/within range of the two widths). Widths in seconds (lower 1 ns .. upper; upper .. 10 s). |
| set_trigger_slopeC | Slope (rise/fall time) trigger. polarity: POSitive|NEGative; when: GREater|LESS|GLESs; window: TA|TB|TAB (which level limit(s) the knobs adjust). |
| set_trigger_runtC | Runt pulse trigger. polarity: POSitive|NEGative; when: NONE|GREater|LESS|GLESs (width qualification). |
| set_trigger_windowB | Window trigger (enter/exit/timeout within a voltage window). slope: POSitive|NEGative|RFALl; position: EXIT|ENTer|TIME; time: 1 ns .. 10 s (only for position=TIME). |
| set_trigger_durationC | Duration (time-qualified logic-state) trigger. pattern: per-channel states for CH1..CH4, e.g. 'HLXL' (H=high, L=low, X=don't care) -> ':TRIGger:DURation:TYPE H,L,X,L' ('HLXL' is auto-expanded to the comma form); when: GREater|LESS|GLESs|UNGLess; level: per-channel threshold in volts, requires level_source (e.g. 'CH2') -> ':TRIGger:DURation:LEVel ,'. |
| set_trigger_timeoutB | Timeout trigger: fires when the signal stays on one side of the level. slope: POSitive|NEGative|RFALl; time: 1 ns .. 10 s. |
| set_trigger_patternB | Pattern trigger. pattern: per-channel state string for CH1..CH4, e.g. 'HHLL' or 'H,H,L,L' (H=high, L=low, X=don't care, R=rising, F=falling; at most one edge; 'HHLL' is auto-expanded to the comma form the firmware requires); level: per-channel threshold in volts, requires level_source (e.g. 'CH2') -> ':TRIGger:PATTern:LEVel ,'. |
| set_trigger_delayC | Delay trigger between two edges (event A -> event B). slope_a/slope_b: POSitive|NEGative; delay_type: GREater|LESS|GLESs|GOUT ('<' lower, '>' upper, inside, outside). |
| set_trigger_setup_holdA | Setup & Hold trigger (:TRIGger:MODE SETup, subsystem :TRIGger:SHOLd). data_source/clock_source: CH1..CH4 or D0..D15 (data and clock lines); slope: POSitive|NEGative (clock edge); pattern: H|L (level the data must hold stable across the clock edge); condition: SETup|HOLD|SETHold; setup_time/hold_time: 1 ns .. 10 s; data_level/clock_level: volts (analog: ±4.5×scale−offset; digital: ±15 V). |
| set_trigger_nth_edgeB | Nth-edge burst trigger (fires on the Nth edge after a quiet period). slope: POSitive|NEGative; idle_time: 16 ns .. 10 s; edge: which edge to trigger on, 1 .. 65535; level: volts (analog: ±4.5×scale−offset; digital: ±15 V). |
| set_trigger_videoC | Video trigger. mode: ODDField|EVENfield|LINE|ALINes; polarity: POSitive|NEGative; line: 1 .. 1125 (limit depends on the standard); level: volts; standard: PALSecam|NTSC|480P|576P|720P60|720P50|720P30|720P25|720P24| 1080P60|1080P50|1080P30|1080P25|1080P24|1080I60|1080I50 |
| set_trigger_serialA | Serial-bus trigger: RS232 | IIC | SPI | CAN | LIN | FLEXray | IIS | M1553. Typed params map to the documented keywords of the selected protocol
(sent as :TRIGger:: ; booleans are sent as 1/0,
everything else verbatim):
RS232: source level polarity when data baud width stop parity buser
IIC: scl sda clevel dlevel when awidth address direction dbytes
data currbit code
SPI: clk scl miso sda cs clevel dlevel slevel slope when mode
timeout width data currbit code
CAN: source stype when baud spoint extended define dwidth data
currbit code level
LIN: source level standard baud samplepoint when error id data
currbit code
FLEXray: source when level baud pos error symbol frame define idcmp
cyccomp maxcy mincy maxid minid ch
IIS: clock data_source ws_select clock_slope clevel slevel dlevel
alignment uwidth width dmin dmax when audio data code
M1553: source when polarity window sync error datcomp datvalue dmin
dmax drta dbit code alevel blevel
Anything else: pass |
| measure_itemA | Measure one of the 44 items and return its current value. Delay/phase items (RRDelay..FFPHase) need source and source2. source: CH1..CH4 / MATH1..4 / D0..D15. show_on_screen=True additionally puts the item on the scope display. Items: VMAX, VMIN, VPP, VTOP, VBASe, VAMP, VAVG, VRMS, OVERshoot, PREShoot, MARea, MPARea, PERiod, FREQuency, RTIMe, FTIMe, PWIDth, NWIDth, PDUTy, NDUTy, TVMAX, TVMIN, PSLewrate, NSLewrate, VUPPer, VMID, VLOWer, PVRMs, PPULses, NPULses, PEDGes, NEDGes, RRDelay, RFDelay, FRDelay, FFDelay, RRPHase, RFPHase, FRPHase, FFPHase, ACRMs. |
| measure_batchC | Measure multiple items on one source, returned as a dict. |
| measure_quickC | Read the common quick set on one channel: VPP VMAX VMIN VAVG VRMS PERiod FREQuency RTIMe FTIMe PWIDth PDUTy. |
| set_measure_statisticsC | Control measurement statistics (mean/min/max/... over N acquisitions). count: statistics count, integer 2 to 100000; reset: clear history data. |
| measure_statistics_itemB | Read one statistic of a measurement item, or enable item statistics. statistic: MAXimum|MINimum|CURRent|AVERages|DEViation|CNT (short forms ok). source/source2: CH1..CH4 / MATH1..4 / D0..D15 (source2 only for the delay/phase items). enable=True first sends the write form (:MEASure:STATistic:ITEM) to turn on statistics for the item. |
| set_measure_thresholdsA | Measurement thresholds (used for rise time, delay, phase, ...). source: threshold source CH1..CH4 / MATH1..4 (selected via :MEASure:THReshold:SOURce); threshold_type: PERCent (10-90 etc.) | ABSolute; upper/middle/lower: threshold upper/middle/lower level — percent when the type is PERCent, volts when ABSolute (sent as :MEASure:SETup:MAX/MID/MIN); reset_defaults=True restores the default threshold levels (:MEASure:THReshold:DEFault). |
| set_measure_sources_abA | Set Source A / Source B used by phase and delay measurements. Source A is written to both :MEASure:SETup:PSA and :MEASure:SETup:DSA (identical functions per the manual); Source B likewise to PSB/DSB. Sources: CH1..CH4 / MATH1..4 / D0..D15. Returns the read-back of all four. |
| configure_measure_setupB | General measurement configuration. source: default measurement source (CH1..CH4 / MATH1..4 / D0..D15); all_measure_source: All-Measure source (CH1..CH4, or OFF to disable); indicator: measurement auto-cursor on/off; category: measure menu category, 0=vertical, 1=horizontal, 2=other; delete_items: clear all enabled measurement items (:MEASure:DELete). |
| configure_measure_regionA | Measurement range (gating region) configuration. area: MAIN | ZOOM (needs delayed sweep) | CURSor (custom region); type: measurement type THReshold | RANGe | AMPMethod; cursor_ax/cursor_bx: cursor-region boundaries in s (for area=CURSor); link_cursors: tie region cursor A and B together (:MEASure:CREGion:CABX). |
| configure_measure_amplitudeB | Amplitude measurement method (:MEASure:AMP tree). type: overall measurement type, THReshold | RANGe | AMPMethod (AMPMethod enables this tree); method: AUTO | MANual amplitude method; top/base: top/base value type for the manual method, HISTogram | MAXMin. |
| set_measure_histogramA | Measurement histogram enable (statistics of measurement items). Distinct from the waveform histogram (:HISTogram, analysis module). The statistics themselves are read with read_histogram_stats, which queries :MEASure:HISTogram:STATistics:RESult?. |
| set_measure_counterA | Frequency counter addressed through the :MEASure command tree. Same counter as set_counter, but via :MEASure:COUNter. enable: counter on/off; source: CH1..CH4 or D0..D15. The counter value is read back via :MEASure:COUNter:VALue? when the counter is enabled. |
| set_cursorB | Configure cursors. mode: OFF|MANual|TRACk|XY (XY requires timebase mode XY); cursor_type (manual mode): TIME (X cursor) | AMPLitude (Y cursor); source/source2: manual source and track source 1/2 (CH1..CH4 / MATH1..4 / NONE); ax/bx: cursor A/B horizontal positions in s; ay/by: vertical in V (applied to both the manual and the track cursors); indicator: cursor measurement indicator on/off; tunit: manual horizontal unit SECond; vunit: manual vertical unit SOURce; track_mode: track axis X|Y; xy_ax/xy_bx/xy_ay/xy_by: XY-mode cursor positions in V. |
| get_cursor_valuesA | Read cursor positions and deltas for the active cursor mode. Manual-mode readings (ax, bx, ay, by, x_delta, 1/x_delta in Hz, y_delta) are always returned; track=True additionally reads the track-mode readings (track_* keys) and the track axis. Readings unavailable in the current mode come back as "<error ...>" strings. |
| get_cursor_xy_valuesA | Read XY-mode cursor positions and deltas (all values in V). Only meaningful with :CURSor:MODE XY and the timebase in XY mode; unavailable readings come back as "<error ...>" strings. |
| read_counterB | Hardware frequency counter state. Returns the current value, enable, source, mode (FREQ/PER/TOT) and resolution (digits 3-6). totalize=True additionally reads the counter statistics switch (:COUNter:TOTalize:ENABle?). |
| set_counterA | Configure the hardware counter. mode: FREQuency|PERiod|TOTalize (short forms FREQ/PER/TOT ok); digits: resolution, integer 3 to 6 (Period/Frequency modes only); source: CH1..CH4 or D0..D15; totalize_enable: counter statistics switch (Period/Frequency only); totalize_clear: clear the totalize count (Totalize mode only). |
| read_dvmA | Digital multimeter current reading (DVM option). :DVM:CURRent? hangs on the instrument while the DVM is disabled, so the reading is only requested when the DVM is on. |
| set_dvmB | Configure DVM. source: CH1..CH4; mode: ACRMs|DC|DCRMs (volts). The AC and DCRM spellings are accepted as aliases of ACRMs/DCRMs. |
| configure_quickA | Configure the QUICK button operation (not the quick measurement readout -- use measure_quick for that). operation: SIMage (save screen image) | SWAVe (save waveform) | SSETup (save setup) | AMEasure (all measure) | SRESet (statistics reset) | RECord (waveform record) | SSAVe (save group). Short forms (SIM, SWAV, SSET, AME, SRES, REC, SSAV) are accepted. |
| get_waveformA | Acquire waveform data and SAVE it to a local file. Returns metadata (preamble + statistics) and the file path only — sample arrays are never inlined, to protect the caller's context window. source: CH1..CH4 or MATH1..MATH4 (MATH only in NORMal mode). mode: NORMal (screen, 1000 pts) | MAXimum | RAW (full memory; the instrument is stopped first). fmt: BYTE|WORD|ASCII. start/stop: 1-based inclusive point range (RAW/MAX). points: alternative window selector — number of points to read (:WAVeform:POINts, manual 3.28.4); when given, the RAW full-memory start/stop default is skipped and start/stop are only sent if explicitly provided. save_format: csv | npy (npy recommended for RAW ≥ 1M points; CSV is refused above max_csv_points=2M unless force_csv=True — a 50M-point CSV would be ~2 GB of text). Parse the file afterwards with your own protocol scripts. |
| get_waveform_preambleA | Query the 10 waveform preamble parameters of a source. Returns format, type, points, count, xincrement, xorigin, xreference, yincrement, yorigin, yreference (with engineering interpretation). apply=False only queries without touching source/mode settings. source (when given): CH1..CH4 or MATH1..MATH4; mode: NORMal|MAXimum|RAW (MATH sources only support NORMal mode). |
| export_waveform_csvC | Convenience wrapper: full-memory CSV export (stops the instrument). |
| get_waveform_setupA | Read back the current :WAVeform read-out configuration (manual 3.28). Queries :WAVeform:SOURce?/:MODE?/:FORMat?/:POINts?/:STARt?/:STOP? and the six per-axis scaling queries (:XINCrement?/:XORigin?/:XREFerence?/ :YINCrement?/:YORigin?/:YREFerence?) as engineered values (ints/floats). The preamble (get_waveform_preamble) returns the same axis data in a single query. |
| get_math_waveformA | Acquire the computed waveform of math channel MATH1..MATH4 to a file. There is no :MATH:DATA? command on this model — math data is read through :WAVeform:SOURce MATH + :WAVeform:DATA? (manual 3.28.1). Firmware quirk (verified on 00.01.00): MATH sources are only readable in NORMal waveform mode, so this wrapper always uses NORMal. Samples go to disk exactly like get_waveform; only statistics come back inline. |
| configure_mathA | Configure math channel MATH1..MATH4 (manual 3.16). Only given parameters are changed; all validation happens before anything is sent. operator: ADD|SUBTract|MULTiply|DIVision|AND|OR|XOR|NOT|FFT|INTG|DIFF| SQRT|LG|LN|EXP|ABS|LPASs|HPASs|BPASs|BSTop|AXB source1/source2: arithmetic/function/filter sources — CH1..CH4, REF1..REF10 or a lower-numbered MATH channel (MATH1..MATH) scale/offset: vertical scale/offset of the math result (unit follows the operator; invalid for logic and FFT operators) invert: invert the math waveform (not for FFT/logic) lsource1/lsource2: logic operation sources — D0..D15 or CH1..CH4 grid: FULL|HALF|NONE math window grid; expand: GND|CENTer vertical expansion reference; wavetype: MAIN|ZOOM (ZOOM needs zoom enabled) fft_source: CH1..CH4 or MATH1..MATH3 fft_window: RECTangle|BLACkman|HANNing|HAMMing|FLATtop|TRIangle fft_unit: VRMS|DB; fft_mode: NORMal|AVERage|MAXHold fft_avg_count: FFT average count 2..1000 (AVERage mode) fft_scale/fft_offset: spectrum vertical scale/offset (2.0 dB / 1 mVrms steps default; range depends on fft_unit) fft_hscale_hz: frequency span 10 Hz..2 GHz; fft_hcenter_hz: center frequency 5 Hz..2 GHz (span and center influence each other) fft_start_hz/fft_end_hz: 0..2 GHz; end must exceed start by >10 Hz fft_search_enable: FFT peak search on/off; fft_search_num: 1..15 peaks; fft_search_threshold/fft_search_excursion: peak detection levels (excursion >= 0, in dB); fft_search_order: AMPorder|FREQorder filter_type: LPASs|HPASs|BPASs|BSTop; filter_w1/filter_w2: cutoff frequencies in Hz (band types need both, W1 < W2; range depends on the screen sample rate) sensitivity: logic operation sensitivity in div (0.1..1.0) distance: differentiation smoothing window 5..10000 points threshold1..threshold4: logic thresholds of CH1..CH4 in V label_show: show the math waveform label; dismode: True = show the math waveform in the main view instead of the math window reset: auto-fit the result's vertical scale (:MATH:RESet) extra: {"KEYWORD": value} passthrough for :MATH keywords documented in section 3.16 (e.g. {"FFT:SEARch:NUM": 10}); unknown keywords are rejected; RESet takes no value (pass None). |
| get_math_configC | Read back the configuration of a math channel. |
| get_math_config_fullA | Read back the complete configuration of a math channel. get_math_config() plus every other queryable :MATH parameter: invert, grid/expand/wavetype, logic sources, the whole FFT block (source, window, unit, mode, average count, scale/offset, frequency span/center, peak search settings), filter type and cutoffs, logic sensitivity/distance/ thresholds, label display, display mode and the math window title. Numeric replies are converted (ints/floats). |
| get_math_fft_peaksA | Query the FFT peak search results table (:MATH:FFT:SEARch:RES?, manual 3.16.30). Requires the peak search to be enabled first (configure_math fft_search_enable=True). Returns up to 15 rows — rank, frequency (Hz when the unit is recognized) and amplitude with its unit as displayed by the instrument — plus the raw reply. The table is small enough to return inline (not sample data). |
| configure_referenceA | Reference waveform REF1..REF10 (manual 3.20). source: D0..D15, CH1..CH4 or MATH1..MATH4 (must currently be enabled).
vscale/voffset: vertical scale/offset of the reference trace in V (only
available once a waveform has been saved into the slot; the scale range
depends on the probe ratio and input impedance).
color: GRAY|GREen|BLUE|RED|ORANge.
label: per-slot label text; label_enable: label display for ALL
reference slots (global flag).
|
| get_reference_configA | Read back the configuration of reference channel REF1..REF10 (manual 3.20): source, vertical scale/offset (V), color, label, plus the global reference label-display flag. |
| configure_busA | Configure decoding bus BUS1..BUS4 (common + protocol settings). protocol: PARallel|RS232|SPI|IIC|LIN|CAN|IIS|FLEXray|M1553 (:BUS:MODE). Common settings (manual 3.4.1-3.4.9), every None argument is left unchanged: display: bus decoding display on/off format: event-table numeral system HEX|ASCii|DEC|BIN event: event-table display on/off (enable before :EEXPort/:DATA?) label: bus label display on/off - a bool per manual 3.4.5, not text position: bus vertical position, integer -250..250 threshold / threshold_type: per-source threshold in V, sent as ":BUS:THReshold ,", e.g. threshold=1.65, threshold_type="TX". Legal types: PAL|PALCLK|TX|RX|SCL|SDA|CS|CLK| MISO|MOSI|LIN|CAN|CANSub1|FLEX|1553|I2SClk|DATA|WS|CH1..CH4. Legal voltage range: +/-5 vertical divisions around the channel offset. Typed protocol parameters, routed to the active protocol (if protocol= is omitted, the current bus mode is queried first): source: single line source, CAN|LIN|FLEXray|M1553 only baud: RS232 (1 bps..20 Mbps) | CAN (10 kbps..5 Mbps) | LIN (2.4 kbps..20 Mbps) | FLEXray (2.5/5/10 Mbps, discrete) dbits: RS232 (5..9) | SPI (4..32) parity: RS232 NONE|ODD|EVEN | LIN bool (include parity bit) polarity: POSitive|NEGative for RS232/PARallel/IIS, HIGH|LOW for SPI (cross-spellings are mapped) endian: MSB|LSB for RS232/SPI/IIS Any other keyword goes through |
| get_bus_configA | Read back the decoding bus configuration. Default (no extra arguments): queries :BUS:MODE?, DISPlay? and LABel? only. Any of full=True / protocol= / thresholds= additionally reads FORMat/EVENt/POSition; full=True or protocol= also queries every per-protocol keyword the manual defines for the decoding type (returned under 'protocol_config', keyed by the SCPI keyword, e.g. 'RS232:BAUD'); thresholds= adds per-source threshold voltages. protocol: explicitly select which protocol keyword set to query; by default the set follows the bus mode reported by the instrument. thresholds: threshold source types to query, e.g. ["TX","RX"] or ["SCL","SDA"] (manual 3.4.9) -> {type: volts string}. |
| configure_bus_parallelA | Set Bus to PARallel decoding and configure it (manual 3.4.10). bus_source: data source D7D0|D15D8|D15D0|D0D7|D8D15|D0D15|CH1..CH4|USER (USER enables the per-bit sources below) clk: clock source CH1..CH4 or D0..D15, or OFF to sample on data change clk_slope: POSitive|NEGative|BOTH clock edge sampled on width: data width 1..16 (analog sources are limited to 1..4) bit / bit_source: select data bit 0..width-1, then its line source (BUS_source must be USER) endian: NEGative|POSitive (NEGative = inverted, manual default) polarity: NEGative|POSitive data polarity display: enable the decoding bus |
| configure_bus_rs232A | Set Bus to RS232/UART decoding and configure it (manual 3.4.11). tx / rx: line sources CH1..CH4 or D0..D15; rx also OFF (tx and rx cannot both be OFF) polarity: POSitive|NEGative logic sense (default NEGative idle-low) parity: NONE|ODD|EVEN endian: MSB|LSB bit order (default LSB) baud: 1 bps to 20 Mbps in bps (default 9600) dbits: 5|6|7|8|9 data bits (default 8) sbits: 1|1.5|2 stop bits (default 1) display: enable the decoding bus |
| configure_bus_iicA | Set Bus to I2C decoding and configure it (manual 3.4.12). sclk / sda: clock (SCL) and data (SDA) line sources, CH1..CH4 or D0..D15 exchange: swap the clock and data channel sources addr_bits: slave address width 7|8|10 bits (default 7) display: enable the decoding bus |
| configure_bus_spiA | Set Bus to SPI decoding and configure it (manual 3.4.13). sclk: clock source CH1..CH4 or D0..D15 clk_slope: POSitive|NEGative clock edge sampled on miso / mosi: data line sources; each may be OFF but not both at once polarity: HIGH|LOW data polarity (high=1 / low=1) dbits: data width 4..32 bits (default 8) endian: MSB|LSB bit order (default MSB) mode: CS|TIMeout frame synchronization (default TIMeout) timeout_s: timeout frame gap in s, 8 ns..10 s (TIMeout mode only, must exceed the max clock pulse width) ss: chip-select line source CH1..CH4 or D0..D15 (CS mode only) ss_polarity: HIGH|LOW chip-select active level (CS mode only) display: enable the decoding bus |
| configure_bus_canA | Set Bus to CAN/CAN-FD decoding and configure it (manual 3.4.14). source: CAN line source CH1..CH4 or D0..D15 signal_type: TX|RX|CANH|CANL|DIFFerential (probe type, default CANH) baud: arbitration baud rate 10 kbps..5 Mbps in bps (default 1 Mbps) fd_baud: CAN-FD data-phase baud rate 1 Mbps..10 Mbps in bps sample_point: bit sample position 10..90 in % (default 80) fd_sample_point: CAN-FD data-phase sample position 10..90 in % display: enable the decoding bus |
| configure_bus_linA | Set Bus to LIN decoding and configure it (manual 3.4.15). source: LIN line source CH1..CH4 or D0..D15 standard: LIN bus version V1X|V2X|MIXed (default MIXed) baud: 2.4 kbps..20 Mbps in bps (default 9600) parity: include the parity bit in the decoded frames display: enable the decoding bus |
| configure_bus_flexrayA | Set Bus to FlexRay decoding and configure it (manual 3.4.16). source: FlexRay line source CH1..CH4 or D0..D15 baud: 2500000|5000000|10000000 bps (default 10000000) sample_point: bit sample position 10..90 in % (default 50) signal_type: BP|BM|RT probed signal (default BP) channel: FlexRay channel A|B (default A) display: enable the decoding bus |
| configure_bus_iisA | Set Bus to I2S decoding and configure it (manual 3.4.17). clock / data / ws_select: serial clock, data and word-select (audio channel) line sources, each CH1..CH4 or D0..D15 alignment: IIS|RJ|LJ data alignment (default IIS) clk_slope: POSitive|NEGative clock edge sampled on word_width: word size 4..32 bits receive_width: receive width 4..32 bits ws_low: LEFT|RIGHt audio channel indicated by WS low endian: MSB|LSB bit order (default MSB) polarity: POSitive|NEGative data polarity display: enable the decoding bus |
| configure_bus_m1553A | Set Bus to MIL-STD-1553B decoding and configure it (manual 3.4.18). source: 1553 bus line source CH1..CH4 or D0..D15 display: enable the decoding bus (Set the differential threshold via configure_bus(threshold=..., threshold_type='1553').) |
| read_bus_dataA | Read the decoding event table (:BUS:DATA?). The full table is saved to a CSV file (ready for protocol-analysis scripts); only a short preview and row count are returned inline. Requires the bus to be enabled with a decodable signal on its sources. |
| export_bus_on_instrumentC | Export the event table to a CSV on the INSTRUMENT's own storage (USB stick), e.g. path='C:/123.csv' or 'E:/decode.csv'. |
| configure_awgA | Configure generator channel GI/GII (SOURce1/2). function: SINusoid|SQUare|RAMP|NOISe|DC|ARB|EXPRise|EXPFall|ECG1|GAUSsian| LORentz|HAVersine|SINC (manual 3.25.2; abbreviations allowed). frequency in Hz, 2 mHz to 100 MHz (per-waveform limits: square/ramp/arb and built-in waveforms top out at 20 MHz, ramp at 2 MHz; DC/Noise ignore it). period in s, 10 ns to 500 s — reciprocal of frequency; when both are given the period is written last and therefore wins. amplitude in Vpp, 1 mV to 20 V (50-ohm load tops out at 10 Vpp, and above 50 MHz the limits halve). offset in V, |offset| <= 10 V (actual limit depends on amplitude/impedance). high/low absolute levels in V within +/-10 V; when both are given high must stay above low. phase in degrees, 0 to 360. duty_percent for SQUare, 1 to 99. ramp_symmetry_percent for RAMP, 0 to 100. impedance: OMEG (HighZ, 1 Mohm) | FIFTy (50-ohm load); HIGHZ/50/LOAD also OK. load_arbitrary: path of a stored arbitrary waveform file, e.g. "D:/123.csv" (local storage "C:/", external "D:/"); use together with function="ARB". Use sync_awg_phase() for the align-phase operation and get_awg_full_config() to read every setting back. |
| get_awg_configA | Read back the core generator channel configuration (raw SCPI strings). Covers output state, function, frequency, amplitude, offset, phase and impedance; use get_awg_full_config() for every :SOURce readback including period, high/low levels, duty, symmetry, arb path and modulation. |
| get_awg_full_configB | Read back every generator channel setting (manual 3.25.1 - 3.25.25). Returns engineered values: booleans for states, floats (Hz, s, V, degrees, percent) for numerics and short-form strings for enums (e.g. function "SQU", modulation waveform "TRI"). Includes the loaded arbitrary waveform path and the complete AM/FM/PM modulation configuration. |
| set_awg_outputC | Turn generator channel output ON/OFF. |
| sync_awg_phaseB | Perform the "align phase" operation (manual 3.25.7). Sends :SOURce:PHASe:SYNChronize: both generator channels are re-configured to output at their preset frequency and phase; signals whose frequencies are identical (or integer multiples) come out phase-aligned. |
| configure_awg_modulationB | Generator modulation AM|FM|PM (per manual :SOURce:MOD, 3.25.15-3.25.25). This model's manual defines the modulation types AM, FM and PM only (no SWP/ARB/BURSt). type: AM|FM|PM. am_depth_percent: 0-120%. fm_deviation_hz: 2 mHz up to the current carrier frequency. pm_deviation_deg: 0-360. Internal modulation frequency in Hz: 2 mHz-1 MHz. Internal waveform shape: SINusoid|SQUare|TRIangle|UPRamp|DNRamp|NOISe. extra: only MOD subsystem keywords documented in section 3.25 are allowed, e.g. {"MOD:FM:DEViation": 200} (case-insensitive, canonicalized). |
| configure_bodeA | Bode plot configuration (requires generator option; manual 3.5.1-3.5.11). sweep_type: LOG|LINE (DECade/LINear spellings are accepted as aliases). ref_in/ref_out: DUT input/output channel, CH1..CH4 (CHAN/CHANnel forms OK). start_hz: 10 Hz-3 MHz; stop_hz: 100 Hz-30 MHz; when both are given the manual constraint start*10 <= stop is enforced. points: sweep points per decade, 10-100. voltage: sweep amplitude in V, 20 mV-10 V, applied to the frequency range given by voltage_range (default ALL, i.e. a unified amplitude); voltage_range: ALL|10|100|1K|10K|100K|1M|10M|25M (numeric forms like 1000 or 2.5e7 also accepted); only used together with voltage. gain_curve/phase_curve: display the amplitude/phase frequency curve (settable only while the instrument is stopped). |
| get_bode_configA | Read back the full Bode plot configuration (manual 3.5.1 - 3.5.11). voltage_range selects which frequency range's amplitude is queried by :BODeplot:VOLTage? (ALL|10|100|1K|10K|100K|1M|10M|25M or numeric forms). Returns engineered values: booleans for enables/run state, floats in Hz/V, int points per decade; ref_in/ref_out come back in short form (CHAN1..4). |
| get_screenshotB | Capture the oscilloscope screen and save it to a local file. image_format: PNG|BMP|JPG. Returns the file path and size; the image itself is not inlined. |
| set_displayA | Display settings. type: DOTS|VECTors (the manual documents VECTors for this model) persistence: MIN|0.1|0.2|0.5|1|2|5|10|INFinite seconds ('1S'/'1.0' are normalized to plain seconds — the firmware rejects suffixed forms) waveform_brightness: 1..100 (percent) grid_brightness: 0..100; cursor_brightness: 0..100 grid: FULL|HALF|NONE ('OFF' accepted as an alias of NONE) clear: clear all waveforms from the screen rulers: show the scale rulers track_ruler: move the scale ruler to track the waveform coordinate color_grade: color grade display (acquisition-probability coloring) waveform_hold: freeze the displayed waveform |
| get_displayA | Read back the display settings. type (VECT), persistence (MIN..10 or INF), waveform/grid/cursor brightness in percent, grid (FULL|HALF|NONE), and the ruler/color-grade/waveform-freeze states (0 or 1). |
| set_histogramB | Histogram analysis display and statistics. type: HORIzontal|VERTical; source: CHANnel1..CHANnel4; height: histogram height, 1..4 divisions; range_left/right: horizontal display limits in s (left < right); range_top/bottom: vertical display limits in V (bottom < top); reset: clear the histogram statistics; save_csv: save the histogram data to a file on the instrument (e.g. 'C:/hist.csv'); boundary: sigma boundary shown (u1S|u2S|u3S) - not documented in the current Programming Guide, kept for backward compatibility. |
| read_histogram_statsB | Histogram analysis statistics (Sum, Peaks, Max, Min, Pk_Pk, Mean, Median, Mode, Bin width, Sigma, meanPlusSigma/2/3 ...). Queries :HISTogram:STATistics:RESult? (manual 3.11.9) and falls back to the measurement-histogram variant :MEASure:HISTogram:STATistics:RESult? (manual 3.17.32). Values are parsed into a dict; 'raw' keeps the reply. |
| get_histogram_configB | Read back the histogram configuration (manual 3.11.1-3.11.8). |
| configure_maskB | Pass/fail mask test. source: CHANnel1..CHANnel4 (a disabled channel is enabled automatically); operate: RUN|STOP (enable the test before running it); x_adjust: horizontal mask tolerance, 0.01..2 div; y_adjust: vertical mask tolerance, 0.04..2 div; create_from_source: create the mask from the current source waveform (test must be enabled and stopped); reset: reset the passed/failed/total frame counters; output_enable: pulse the rear-panel AUX OUT connector on mask events; output_event: FAIL|PASS event that triggers the AUX OUT pulse; output_pulse_s: AUX OUT pulse width, 100 ns .. 10 ms. |
| get_mask_resultB | Mask test counters: failed, passed and total frame counts. |
| get_mask_configB | Read back the pass/fail test configuration (manual 3.15). |
| configure_searchA | Event search on the acquired waveform (manual 3.22). mode: EDGE|PULSe (only these two search types are documented). Edge search: edge_slope POSitive|NEGative|EITHer, edge_source CHANnel1..CHANnel4, edge_threshold in V. Pulse search: pulse_polarity POSitive|NEGative, pulse_qualifier GREater|LESS|GLESs, pulse_source CHANnel1..CHANnel4, pulse_uwidth_s / pulse_lwidth_s 800 ps .. 10 s, pulse_threshold in V. Documented keywords may also be passed via extra, e.g. {"EDGE:SLOPe": "NEGative"}; unknown keywords raise ValueError. |
| get_search_configB | Read back the search configuration and event counters (manual 3.22). |
| get_search_event_timeB | Time value of a line in the search mark table (:SEARch:VALue?). line: 1-based line number of the mark table; returns the event time. |
| navigate_to_eventB | Jump to the Nth search event (:SEARch:EVENt). event_index is 1-based; 0 selects 'no event' (the query returns 0 while the event table is empty). |
| configure_navigateA | Navigation (time or search navigation) for waveform review. mode: TIME|SEARch per the manual (FRAMe is kept as an undocumented alias observed on firmware 00.01.00); time_speed: HIGH|NORMal|LOW (a raw number is still passed through for compatibility); frame_speed: playback speed for the undocumented FRAMe mode; time_play: start/stop playing in time navigation mode; goto: TIME|SEARch combined with STARt|END|NEXT|BACK, e.g. 'TIME:STARt', 'time_next' or 'search_end', to jump within the navigation mode. The instrument rejects mode changes while running; set stop_first=True to send :STOP first (FRAMe mode additionally requires recorded frames). |
| get_navigate_configB | Read back the navigation configuration (manual 3.23.1-3.23.4). |
| configure_recordA | Waveform recorder and playback. Recording: operate RUN|STOP; frames: number of frames to record (>= 1, frames_max=True records the maximum); interval_s: frame interval 10 ns .. 1 s; prompt: beep when recording completes. Playback: playback_operate RUN|STOP; playback_current / playback_start / playback_end: frame numbers (>= 1); playback_interval_s: 1 ms .. 1 s; playback_mode REPeat|SINGle; playback_direction FORWard|BACKward; playback_step BACK|NEXT steps one frame manually; play_from FFIRst|FEND restarts manual playback from an end. The documented legacy duplicates (:RECord:STARt, :RECord:FRAMes, :RECord:CURRent, :RECord:PLAY) stay reachable via extra, e.g. {"STARt": 1}; unknown keywords raise ValueError. |
| get_record_statusA | Read back waveform record/playback state (manual 3.19): enables, operate states, frame counts and limits, intervals, playback settings and the current frame number and its timestamp. |
| configure_laB | Logic analyzer digital channels D0..D15. digital_channel like 'D3' plus channel_enable to turn one channel on/off and label to set its name; threshold: logic threshold voltage, -15 V .. +15 V, applied to the channel group selected by pod (1: D0-D7, 2: D8-D15); with a digital_channel the group is derived from it; without either, both groups are set (global threshold); active: currently selected digital channel D0..D15 (must be enabled); autosort: D0D15|D15D0 display order; size: SMALl|MEDium|LARGe waveform size (LARGe needs <= 8 channels on); pod + pod_display: enable/disable an entire channel group. |
| get_la_configB | Read back the logic analyzer configuration (manual 3.13): enable, active channel, autosort, size, per-group display state and threshold. With digital_channel (D0..D15), also reads that channel's on/off state and label. |
| list_resourcesA | List VISA resources visible on this host. Note: raw-socket instruments are not discoverable; the MHO98 must be
addressed by its resource string (see |
| connectC | Connect to the oscilloscope.
|
| disconnectB | Close the current instrument connection. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 142 tools
There are many overlapping families: get_channel vs get_channel_full, get_timebase vs get_timebase_full, get_math_config vs get_math_config_full, configure_bus vs configure_bus_rs232/iic/spi/etc., set_counter vs set_measure_counter, and multiple screenshot/save-image tools. Descriptions often clarify differences, but the set has several tool pairs whose boundaries an agent could easily misselect among.
Mostly consistent snake_case verb_noun naming (get_, set_, configure_, measure_, save_, load_, read_) is used throughout. Minor deviations exist, such as bare verbs reset/autoscale, noun-like scpi, and get_screenshot vs get_screenshot_data, but the overall convention is readable and predictable.
142 tools is an extreme mismatch for an MCP server, far beyond the typical 3-15 range. The surface is effectively a full SCPI wrapper, creating excessive cognitive load and making tool selection impractical for an agent despite the exhaustive coverage.
The server covers nearly every major oscilloscope subsystem: system, LAN, save/load, triggers, channels, timebase, acquisition, measurements, cursors, counter/DVM, waveform, math, reference, bus decode, AWG, Bode, display, histogram, mask, search, record, logic analyzer, and connection management. The scpi escape hatch also prevents dead ends for undocumented or unexposed operations.