Skip to main content
Glama

fldigi-mcp

An MCP server for controlling fldigi, the popular amateur-radio digital-modem application, from MCP-aware clients such as Claude Desktop.

fldigi ships a built-in XML-RPC control interface. fldigi-mcp connects to it and exposes the whole API as a small set of logically-grouped MCP tools, so an assistant can read the radio's state and drive the modem, rig, log, and transmitter through plain language.

Status: beta. Signal hunting (find, name and tune to a station from the receiver audio, 0.2.0) and full API coverage (every one of fldigi's 174 XML-RPC methods is reachable through a named operation, enforced by a test), callsign-gated transmit, and an optional experimental Band Guidance feature. Supports the current fldigi release, 4.2.13, verified live on 2026-09-09.

📻 A field-tested fldigi XML-RPC API reference (free community resource)

Building this server meant mapping fldigi's entire XML-RPC interface and verifying every method against a live build — so we've written it all up and are sharing it freely, whether or not you ever use this MCP server:

  • docs/fldigi-api.md — a clean, complete, human-readable reference organized by namespace, with transport details, types, worked examples, a transmit-safety section, and field-tested gotchas.

  • docs/fldigi-api.pdf — the same, as a printable PDF.

  • docs/fldigi-api-spec.md — a terse, machine-readable catalog of all 174 methods (args, return type, read/write/keying).

Verified live against fldigi 4.2.13 via fldigi.list on 2026-09-09 (the method list is identical to 4.2.11, first verified 2026-06-23). It's more complete and current than the public wiki (it documents methods the wiki omits, e.g. TxID, and flags deprecated ones). Independent project — not affiliated with the fldigi / W1HKJ project. Corrections welcome via issues / PRs.

Related MCP server: contest-mcp

Highlights

  • Complete control — every one of the 174 XML-RPC methods in fldigi 4.2.13 is reachable through a named operation in one of 17 tools (one permission each); tests/test_coverage.py fails the build if a method of the shipped catalog is not wired or an argument type disagrees with fldigi's signature. The fldigi_call escape hatch remains for methods a newer build may add.

  • Safe by default — the callsign is the single transmit gate. With no callsign configured the station is receive-only; nothing can key the radio.

  • Names match fldigi — tools and operations mirror fldigi's own API namespaces and on-screen labels (Op Mode, AFC, SQL, Rev, Lock, RxID/TxID, T/R).

  • No fragile dependencies — talks to fldigi with Python's standard-library xmlrpc.client. The only third-party runtime deps are the MCP SDK and PyYAML (for the optional band-plan data).

Why XML-RPC (and not a third-party library)

fldigi's XML-RPC interface is its official, OS-independent control API. This project talks to it directly rather than through an unmaintained wrapper, keeping the moving parts to Python's standard library and fldigi's own API.

Requirements

To install the desktop extension (.mcpb) all you need is:

  • fldigi running (its XML-RPC server is on by default at 127.0.0.1:7362).

Claude Desktop's uv runtime supplies Python and the dependencies, so end users do not install Python or uv themselves. (That runtime is currently marked experimental, so a recent Claude Desktop is recommended.)

For development from source you additionally need Python 3.10+ and uv (and Node.js, only for the MCP Inspector).

Install

Easiest: one-click desktop extension

Download fldigi-mcp.mcpb from the latest release, then in Claude Desktop go to Settings → Extensions → Advanced settings → Install Extension… and choose the file. A short settings form asks for your callsign (everything else has a default). No terminal, no Python, no uv to install.

👉 New to this? Follow the simple step-by-step install guide. Also see the install & safety model.

From source (development)

git clone https://github.com/sbrunner-atx/fldigi-mcp.git
cd fldigi-mcp
uv sync

Then add it to Claude Desktop's config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "fldigi": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/fldigi-mcp", "run", "fldigi-mcp"],
      "env": { "FLDIGI_CALLSIGN": "AE5VG" }
    }
  }
}

Restart Claude Desktop and ask "What's fldigi's status?". Omit the env block to run receive-only.

Try it with the MCP Inspector

uv run mcp dev src/fldigi_mcp/server.py

The Signal Browser patch (patches/) — proposed, not yet merged

Status: offered to fldigi's maintainer on 11 September 2026 (w1hkj/fldigi issue 55). Until it is merged, the method names and fields below are a proposal and may change.

fldigi's Signal Browser, the left-hand panel that decodes up to 30 PSK, RTTY or CW stations at once, is not on its XML-RPC API. patches/fldigi-4.2.13-browser-xmlrpc.patch touches four files (psk_browser.h/.cxx, viewpsk.cxx, xmlrpc.cxx) and adds two methods, browser.get_channels (array of {channel, freq, active, text}, text untrimmed, line breaks kept, accumulated since the last clear) and browser.clear. The browser tool and signal_hunt method="browser" use them and say so when fldigi is unpatched. A second patch, patches/fldigi-4.2.13-rsid-hits.patch (applies on top of the first), adds rsid.get_hits and rsid.clear: the RSID bursts the detector accepted, as {utc, mode, hz}. With RSID set to notify-only, fldigi then names the modes on the band without ever switching the modem; the rsid tool reads the list. Both patches are proposed, not merged. Tested on 4.2.13 (macOS, four synthetic PSK31 stations from 0 to -26 dB: all four copied in full). The patch applies to the fldigi git HEAD on SourceForge and is prepared for upstream submission; until it lands, build fldigi from source with it:

tar xf fldigi-4.2.13.tar.gz && cd fldigi-4.2.13
patch -p1 < /path/to/fldigi-mcp/patches/fldigi-4.2.13-browser-xmlrpc.patch
./configure --prefix=$HOME/.local/fldigi && make -j8 && make install

Tools

Each tool is one permission and takes an operation argument, so e.g. "change the mode" is a single permission regardless of which underlying method runs.

Tool

Controls (fldigi area)

status

quick snapshot: version, mode, frequency, T/R, callsign, band

diagnostics

host/network info for connectivity troubleshooting (no fldigi connection)

application

program info + launch/stop the fldigi process (fldigi.*)

modem

Op Mode / modem select, carrier, bandwidth, AFC range, Olivia

frequency

dial frequency and waterfall sideband

controls

AFC, SQL, Rev, Lock, RxID, TxID, status fields

transmit

T/R, Tune, abort, disable/enable Tx, macros, send — callsign-gated

rig

CAT control: mode, frequency, bandwidth, notch, QSY, meters

log

Logbook / contest fields; ADIF last/all records

text

RX/TX text and data streams

spot

spotting / PSK Reporter

wefax

WEFAX (weather fax) mode

navtex

NAVTEX / SitorB mode

flmsg

flmsg (message forms) interworking

io

ARQ / KISS I/O port selection

legacy

deprecated methods fldigi still serves, each with its current equivalent named

band_guidance

advisory band/watering-hole help (experimental)

signal_hunt

find and name the signals in the receiver audio; rank CQing stations (experimental, [hunt] extra)

tune_to

set modem and carrier to a signal_hunt candidate, receive only

browser

fldigi's Signal Browser: every station the decoder bank holds, with its text (needs the fldigi patch in patches/)

rsid

RSID bursts heard in the passband, mode and frequency, without switching the modem (needs the rsid-hits patch in patches/)

fldigi_call

escape hatch — call any method by name, incl. future ones

Use applicationlist_methods to enumerate every method the running build supports. On 4.2.13 all of them are surfaced in a group; fldigi_call is for methods a newer fldigi may add before this connector catches up.

Configuration

Variable

Default

Purpose

FLDIGI_HOST

127.0.0.1

fldigi XML-RPC host

FLDIGI_PORT

7362

fldigi XML-RPC port

FLDIGI_CALLSIGN

(empty)

Operator callsign. The single transmit gate — set it to enable transmit; blank keeps the station receive-only

FLDIGI_BAND_GUIDANCE

off

Experimental advisory band guidance. on to enable

FLDIGI_REGION

2

IARU region for band guidance: 1, 2, or 3

FLDIGI_PATH

(auto)

Explicit path to the fldigi executable (for application launch)

In the packaged desktop extension these appear as a settings form — most users only ever fill in the callsign.

Transmit safety

The callsign is the single transmit gate. Keying operations (transmit tx/tune/run_macro/send, and the wefax/navtex send operations, and any keying method via fldigi_call) refuse unless FLDIGI_CALLSIGN is set. With it blank, the station is receive-only. rx, abort, and disable_tx are always allowed because they take the station off the air. Any non-blank value is accepted (club, event, vanity, portable, and international calls all work). See docs/install-and-safety.md.

Band Guidance (experimental, off by default)

An optional, advisory feature that suggests a mode's customary "watering hole" and warns when a frequency falls outside the digital band segment — guidance and defaults, never hard locks. Region-aware (IARU R1/R2/R3), covering 160 m – 70 cm. Enable with FLDIGI_BAND_GUIDANCE=on. It adds the band_guidance tool and enriches modem/frequency set operations with an advisory guidance field. Because band-plan data is hard to get exactly right, it ships experimental and disabled by default. Design and data: docs/band-guidance.md.

Remote / distributed setups

fldigi need not run on the same machine. Point the server at it with FLDIGI_HOST/FLDIGI_PORT. The fldigi machine must be launched with --xmlrpc-server-address 0.0.0.0 to accept LAN connections, and the link should be kept on a trusted LAN or tunneled over SSH (the XML-RPC interface is unauthenticated).

Sandboxed MCP clients (e.g. Claude Desktop): the client runs the connector sandboxed so it can only reach 127.0.0.1, not LAN addresses — so a correct LAN IP for fldigi will time out even though telnet to it works. Use the standalone mcp-host-bridge relay on the client computer (it knows fldigi = port 7362), then set FLDIGI_HOST=127.0.0.1:

pipx install mcp-host-bridge             # or download a binary from its releases
mcp-host-bridge install fldigi --to 192.168.1.50

Manage it with mcp-host-bridge status fldigi / uninstall fldigi. The same tool also bridges N3FJP (for the sibling n3fjp-mcp) and any other local service.

Skills

The skills/ directory contains agent skills — operating procedures distilled from live on-air use — bundled with the repo and the .mcpb package:

  • signal-hunting — find a station worth working the way an operator reads the waterfall: signal_hunt names each signal's mode from its bandwidth and tone grid (RTTY, CW, PSK, Olivia, MFSK, DominoEX, MT63; signatures checked against sigidwiki.com), ranks the one that sits still and calls CQ, tune_to sets modem and carrier, and twenty seconds of text confirms it. Needs pip install 'fldigi-mcp[hunt]' (numpy, sounddevice) and the Audio input device setting; where the server does not run beside the receiver (sandbox, remote fldigi), fldigi-mcp-tap runs there and the server asks it over HTTP (Signal-hunt tap URL); without any audio it falls back to stepping fldigi's search_up. Verified on five recordings of known mode, 5 of 5. Receive only.

  • fldigi-operating — TX/RX handoff done right (^r return-to-receive via transmit → send, abort as the panic button, never poll the TX buffer), RX-buffer polling discipline (delta reads, the no-echo rule, restart detection), and a reference CQ loop. Field-proven during ARRL Field Day 2026.

The fldigi-mcp Operating Field Guide (PDF) documents these skills and their companion contest-operating from the sibling n3fjp-mcp — skills at a glance, installation, a plain-language "Your first session — Claude for hams" chapter for operators new to AI, the operating standard, the special-case playbook, and worked examples transcribed from ARRL Field Day 2026.

To use with Claude Code / Cowork, copy the skill directory into your ~/.claude/skills/ (or a project's .claude/skills/).

Development

uv sync
uv run ruff check .      # lint
uv run pytest            # tests (no running fldigi required)

The test suite covers the band-plan logic and the operation maps / type coercion; it does not require a running fldigi.

License

GPL-3.0-or-later © 2026 Stefan Brunner (AE5VG)

fldigi-mcp is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. It was MIT-licensed through 0.2.2; the change to GPL-3.0-or-later (the licence fldigi itself uses) lets this project reuse fldigi code, such as its multi-channel signal browser, directly. Talking to fldigi over XML-RPC never required this; porting its decoders does.

Available Tools

22 tools
applicationC

The fldigi program and its process.

Info operations: version, version_struct, name, name_version, config_dir, list_methods. Process operations: launch, stop, terminate, is_running.

launch starts fldigi pointed at the configured XML-RPC endpoint; stop/ terminate ask it to quit (saving options; optionally the log/macros) and fall back to ending a process this server started.

ParametersJSON Schema
NameRequiredDescriptionDefault
save_logNo
operationYes
save_macrosNo

TDQS

C2.6/5.0
Behavior2/5

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

Without annotations, the description carries the full burden. It mentions that stop/terminate can save log/macros and fall back to ending a process this server started, but lacks details on side effects, permissions, or state changes (e.g., what happens if launch is called while already running).

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

Conciseness3/5

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

The description is relatively concise but could be more structured. It front-loads the purpose and lists operations, but the parameter explanation is embedded in a sentence about stop/terminate, making it less clear.

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

Completeness2/5

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

Given no output schema and low parameter coverage, the description is incomplete. It lacks information on return values, error conditions, prerequisites (e.g., is fldigi must be installed?), and how to handle failed operations. The agent would struggle to use the tool correctly without additional context.

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

Parameters2/5

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

The schema has 0% coverage, so the description must explain parameters. It names operations in text but does not enumerate the exact string values for the 'operation' parameter. 'save_log' and 'save_macros' are implied in the stop/terminate description but not explicitly tied to parameter names or behaviors.

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

Purpose4/5

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

The description clearly states it manages the fldigi program and its process, listing specific info and process operations. However, it does not explicitly differentiate from sibling tools like controls or diagnostics, which might also interact with fldigi.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description lists operations but does not specify scenarios or prerequisites, leaving the agent to infer usage.

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

band_guidanceA

Advisory band guidance (experimental, region-aware) — informational / QSY help only.

operations:

  • lookup (frequency_hz, optional mode): what the band plan says at a frequency.

  • watering_hole (mode, optional band): the preferred calling frequency for a mode.

  • move_to_watering_hole (mode): set the dial to that frequency (does NOT transmit).

ParametersJSON Schema
NameRequiredDescriptionDefault
bandNo
modeNo
operationYes
frequency_hzNo

TDQS

A3.9/5.0
Behavior4/5

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

Given no annotations, the description carries the full burden. It discloses that the tool is experimental, region-aware, informational only, and that move_to_watering_hole sets the dial without transmitting. This covers key behavioral aspects adequately.

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

Conciseness5/5

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

The description is concise, front-loading the purpose and then listing operations succinctly. Every sentence contributes necessary information without redundancy.

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

Completeness4/5

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

For a tool with 4 parameters and no output schema, the description covers the three operations and their parameters. It could be more complete by mentioning the return format, but overall it provides sufficient context for an informational tool.

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

Parameters4/5

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

Schema coverage is 0%, but the description explains each operation's parameters (e.g., lookup uses frequency_hz and optional mode, watering_hole uses mode and optional band). It adds meaning beyond parameter names, such as 'what the band plan says at a frequency' and 'preferred calling frequency'.

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

Purpose4/5

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

The description clearly states the tool provides advisory band guidance for QSY help, listing three specific operations (lookup, watering_hole, move_to_watering_hole). It uses specific verbs and identifies the resource (band plan). However, it does not explicitly distinguish itself from sibling tools like frequency or rig.

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

Usage Guidelines3/5

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

The description mentions 'informational / QSY help only' and that move_to_watering_hole does not transmit, implying read-only use. It does not explicitly state when to use this tool versus alternatives or provide contraindications.

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

browserA

fldigi's Signal Browser over XML-RPC: every station the multi-channel decoder bank has locked to in the passband, with the text decoded on each channel. This is what the left-hand browser panel shows, and it copies stations far too weak for the waterfall to show. operations: channels (list of {channel, freq, active, text}; text accumulates since the last clear, a newline marks a lost-and-regained signal), clear, available.

Runs for PSK, RTTY and CW modems (fldigi's browser covers those). Needs a fldigi built with the patch in fldigi-mcp/patches; stock 4.2.13 has no browser.* methods, and then this tool says so instead of failing. Receive only.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationNochannels

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations, this description carries the full burden, and it excels: it discloses accumulation of text since last clear, newline semantics for lost-and-regained signals, the patch requirement, graceful fallback on stock fldigi, and receive-only safety. This is far beyond a basic capability statement.

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

Conciseness4/5

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

The description is information-dense and front-loaded with the core purpose, then operations, then compatibility. No word is wasted, though the waterfall/left-panel analogy is secondary; it earns its place by grounding the tool in the UI.

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

Completeness4/5

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

For a one-parameter tool with no output schema, the description covers the main return payload, behavior quirks, prerequisites, and error behavior. It is missing only minor details such as the exact response for clear/available, but the agent has enough to call it correctly.

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

Parameters4/5

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

Schema coverage is 0% and operation has no enum, so the description must supply meaning. It does: it enumerates channels, clear, and available operations and details the channels result shape and accumulation behavior. It leaves clear/available outcomes slightly underspecified, but the names plus context are enough for an agent to operate.

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

Purpose4/5

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

The description clearly identifies the tool as fldigi's Signal Browser over XML-RPC and explains that it returns stations locked by the decoder bank with decoded text, plus the operations available. This is a clear function-resource pairing, but it does not explicitly contrast with sibling tools like signal_hunt or modem.

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

Usage Guidelines4/5

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

It gives helpful context: suitable for PSK/RTTY/CW, needs a patched fldigi, is receive-only, and is meant for signals too weak for the waterfall. It implies when to use it, but it does not name alternative tools or state explicit when-not-to-use conditions beyond 'receive only'.

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

controlsC

fldigi operating controls (the AFC / SQL / Rev / Lock / RxID / TxID buttons) and status. operations: get/set/toggle_afc, get/set/toggle_squelch (SQL), get/set/inc_squelch_level, get/set/toggle_reverse (Rev), get/set/toggle_lock (Lock), get/set/toggle_rxid (RxID), get/set/toggle_txid (TxID), get_status1, get_status2, get_trx_status, get_trx_state.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNo
operationYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description must cover behavioral aspects. It mentions 'operations' implying both read and write capabilities (get/set/toggle), but does not describe side effects, idempotency, or safety implications (e.g., whether toggling AFC affects other settings).

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

Conciseness3/5

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

The description is a single dense paragraph. It front-loads the purpose and lists operations efficiently, but could benefit from structured formatting (e.g., bullet points) to improve readability. It is not overly long but feels cramped.

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

Completeness2/5

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

Given no output schema, 2 parameters (one undocumented), and 14 sibling tools, the description is incomplete. It does not explain return values, error conditions, or the role of the 'value' parameter. The agent lacks critical context to use this tool effectively.

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

Parameters2/5

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

The schema has 0% description coverage, so the description must compensate. It enumerates valid values for 'operation' in a list, which adds meaning beyond the schema's empty description. However, it fails to describe the 'value' parameter at all, leaving its type and allowed values ambiguous.

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

Purpose4/5

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

The description clearly states the tool's domain: fldigi operating controls and status, and lists specific operations. It distinguishes the tool from general-purpose tools but does not differentiate from sibling tools that may also relate to fldigi, such as 'fldigi_call' or 'frequency'.

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

Usage Guidelines2/5

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

The description lists operations but provides no guidance on when to use this tool versus alternatives, nor when to use specific operations. Sibling tools are listed but not differentiated, leaving the agent to infer usage context without explicit direction.

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

diagnosticsA

Host + network diagnostics for troubleshooting connectivity.

Does NOT connect to fldigi. Reports the resolved FLDIGI_HOST/PORT, this process's Python and hostname, the transmit-gate state, and the host's network interfaces — so you can tell whether the process can even see the target's network (e.g. when running host-side vs. sandboxed). If a non- loopback host times out, see mcp-host-bridge (docs/INSTALL.md).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

Discloses that it does not connect to fldigi, and details exactly what information it reports (resolved FLDIGI_HOST/PORT, Python version, hostname, transmit-gate state, network interfaces). No annotations provided, but description fully informs agent of behavior.

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

Conciseness5/5

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

Concise multi-sentence paragraph that front-loads the main purpose and adds necessary context efficiently. Every sentence adds value without redundancy.

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

Completeness5/5

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

Given zero parameters and no output schema, the description fully explains the tool's purpose, what it reports, and how to interpret results. It 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.

Parameters4/5

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

No parameters exist, so baseline 4. The description adds no parameter info because none are needed.

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

Purpose5/5

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

Clearly states it performs host and network diagnostics for troubleshooting connectivity. The description distinguishes itself from siblings by specifying its diagnostic scope, which is unique among the listed tools.

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

Usage Guidelines5/5

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

Explicitly states that it does NOT connect to fldigi, and provides guidance on what to do if a non-loopback host times out, directing to mcp-host-bridge docs. This helps the agent choose this tool for connectivity troubleshooting.

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

fldigi_callA

Escape hatch: call ANY fldigi XML-RPC method by dotted name (e.g. 'rig.get_mode').

Use station with operation 'list_methods' to discover every method the running build supports. Keying methods remain callsign-gated.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodYes
paramsNo

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must bear full burden. It mentions that keying methods are 'callsign-gated', but does not disclose other behavioral traits such as destructive potential, authentication requirements, or error behavior. This is moderately transparent.

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

Conciseness5/5

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

The description is extremely concise: three sentences with no redundant information. The first sentence front-loads the core purpose and an example, making it easy for an agent to quickly grasp the tool's function.

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

Completeness4/5

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

Given the lack of an output schema and annotations, the description provides adequate context for understanding the tool's use and discovery. However, it does not describe return values or error handling, which would improve completeness.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. It explains that 'method' is a dotted XML-RPC method name, adding meaning beyond the schema. However, it does not clarify the structure or purpose of 'params', leaving some ambiguity.

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

Purpose5/5

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

The description clearly identifies the tool as an 'escape hatch' for calling any fldigi XML-RPC method by dotted name, with a concrete example ('rig.get_mode'). This distinguishes it from sibling tools, which are domain-specific.

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

Usage Guidelines4/5

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

The description advises using `station` with 'list_methods' to discover available methods, implying that this tool should be used when no specific sibling tool exists. However, it does not explicitly state when not to use it or provide alternatives.

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

flmsgB

flmsg (message forms) interworking. operations: online, available, transfer, squelch, get_data (RX data since the last query).

These signal or hand data to a running flmsg; none of them key the transmitter.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral disclosure burden. It does add some useful context: operations require a running flmsg and do not key the transmitter, and get_data is clarified as returning RX data since the last query. But the behaviors of online, available, transfer, and squelch are left completely unexplained.

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

Conciseness4/5

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

The description is short and front-loaded, with the operation list first and the safety-relevant caveat second. Every sentence contributes, though the opening phrase 'flmsg (message forms) interworking' is a bit awkward and could be phrased more clearly.

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

Completeness2/5

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

Given the absence of annotations, an output schema, and parameter descriptions, the tool definition is incomplete. It names operations but does not explain most of them, their expected effects, return values, or prerequisites beyond needing a running flmsg.

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

Parameters3/5

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

The schema only defines an 'operation' string with no enum or descriptions, so the description's list of operations adds real value by enumerating likely accepted values. It even explains get_data, but the other operation names are not defined, so the agent still lacks enough semantic detail to choose confidently.

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

Purpose4/5

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

The description states that the tool signals or hands data to a running flmsg, which is a clear enough action on a named resource. The operation list adds specificity, and the caveat that none of the operations key the transmitter helps separate it from transmit-focused siblings, though it does not name any sibling explicitly.

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

Usage Guidelines3/5

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

The phrase 'signal or hand data to a running flmsg' implies when the tool is appropriate, and 'none of them key the transmitter' provides a useful exclusion. However, there is no explicit guidance about when to choose this tool over sibling tools or how to select among the listed operations.

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

frequencyC

RF frequency and waterfall sideband. operations: get, set (value=Hz), increment (value=Hz), get_sideband, set_sideband (value='USB'|'LSB').

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNo
operationYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only lists operations. It fails to disclose side effects (e.g., whether setting frequency affects other settings), permissions needed, or error behavior, providing minimal transparency.

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

Conciseness4/5

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

The description is concise, listing operations in a compact format. It avoids redundancy but could benefit from slight restructuring (e.g., separating frequency and sideband concerns) for clarity.

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

Completeness2/5

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

Given the tool has 2 parameters, multiple operations, and no output schema, the description is incomplete. It omits return values, success/failure indicators, and examples, leaving many usage questions unanswered.

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

Parameters3/5

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

Schema description coverage is 0%, so description must compensate. It explains that 'value' is in Hz for set/increment operations and 'USB' or 'LSB' for set_sideband. However, it does not fully clarify the 'operation' parameter's enumerated values or provide format constraints.

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

Purpose4/5

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

The description clearly states the tool handles RF frequency and waterfall sideband, listing specific operations (get, set, increment, get_sideband, set_sideband). This distinguishes it from sibling tools like rig or controls by focusing on frequency and sideband control.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool vs alternatives, nor any conditions for when not to use it. The description simply lists operations without context.

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

ioC

ARQ / KISS I/O port. operations: in_use (which port is active), enable_kiss, enable_arq.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It names operations but does not explain side effects, whether enable_arq/enable_kiss change persistent state, prerequisites, or what in_use returns. The mutating nature of 'enable' is implied but not stated.

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

Conciseness4/5

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

The description is short and front-loaded with the resource type followed by the operation list. There is minor grammatical awkwardness, but every clause contributes useful information and there is no redundancy.

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

Completeness3/5

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

For a single-parameter tool, listing the expected operation values is the core requirementakey information. Still, with no annotations and no output schema, the description leaves out when to use each operation and what behavior or result follows, making the definition minimally viable rather than complete.

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

Parameters3/5

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

The schema only defines a required string 'operation' with no enum or description (0% coverage). The description compensates by listing the valid operation values and clarifying in_use as 'which port is active'. However, it does not explain the individual semantics or effects of enable_kiss and enable_arq beyond their names.

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

Purpose4/5

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

The description identifies the resource as an 'ARQ / KISS I/O port' and enumerates the operations it supports: in_use, enable_kiss, enable_arq. This gives an agent a concrete sense of what the tool does, though it stops short of an explicit verb phrase. The I/O-port focus also distinguishes it from comms siblings like modem and transmit.

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

Usage Guidelines2/5

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

There is no guidance on when to choose this tool over alternatives or what conditions call for KISS versus ARQ. The operation list implies usage for port control, but no exclusions or comparisons to sibling tools are provided. An agent must infer the appropriate context.

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

legacyA

Deprecated fldigi methods, kept so the whole catalog is reachable. Each has a current equivalent, which you should prefer: get/set_sideband -> frequency get/set_sideband; rsid -> controls toggle_rxid; get/set_rig_name, get/set_rig_frequency, get/set_rig_mode(s), get/set_rig_bandwidth(s) -> the rig tool; log_get_sideband -> frequency get_sideband; flmsg_online/available/transfer/squelch -> the flmsg tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNo
operationYes

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It mentions deprecation and the existence of current equivalents, but does not state whether operations are read-only or mutating, what side effects they have, how errors surface, or any operational constraints. This is insufficient for a tool that dispatches many different legacy methods.

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

Conciseness5/5

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

The description is compact and front-loaded with its core purpose: deprecated methods. The mapping list is dense but every mapping earns its place by pointing to the correct alternative tool. There is no filler or redundant repetition of schema details.

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

Completeness2/5

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

Despite the useful mappings, the description is incomplete. It never explicitly states that the 'operation' parameter selects the legacy method, does not describe how to pass values, does not list return behavior, and lacks any guidance for invalid or unknown operation names. An agent would still need to infer how to construct a valid call.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It does partially by listing valid operation names (get/set_sideband, rsid, etc.), which helps populate the 'operation' parameter. However, it does not explain the 'value' parameter at all, nor how it applies to set operations, so the description only partially compensates for the schema's lack of detail.

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

Purpose4/5

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

The description clearly identifies the tool as a collection of deprecated fldigi methods and explains why it exists ('kept so the whole catalog is reachable'). It does not explicitly state a verb like 'invoke' or 'call', but the mapping list makes the resource and behavior recognizable and differentiates it from current equivalents.

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

Usage Guidelines5/5

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

The description explicitly says current equivalents should be preferred and then provides a direct mapping for each legacy method to its modern counterpart (e.g., 'rsid -> controls toggle_rxid'). This gives an agent precise guidance on when not to use this tool and which sibling to use instead.

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

logA

Logbook (QSO / contest) fields. operations: get (field=...), set (field=..., value=...), clear, last_record, all_records.

Settable fields: call, name, qth, locator, serial_number, exchange, rst_in, rst_out, contest_counter (set only: the starting contest serial number). Gettable fields also include frequency, time_on/off, serial_number_sent, state, province, country, band, notes, az. last_record / all_records return ADIF.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldNo
valueNo
operationYes

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose useful behavioral details: it lists the five operations, distinguishes settable from gettable fields, notes that contest_counter is set-only, and specifies that last_record/all_records return ADIF. It does not mention error handling, side effects, or persistence, but it covers the core behavioral surface of the tool.

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

Conciseness4/5

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

The description is well-structured: the first sentence introduces the resource and lists operations, followed by two paragraphs grouping settable and gettable fields, and ends with return format. It is information-dense but not bloated. It could be slightly more compact by folding the field lists, but the structure aids comprehension.

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

Completeness3/5

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

Given the tool's complexity (multiple operations, many fields, no output schema), the description covers a lot but leaves gaps: it does not give exact syntax for calling operations (e.g., operation='get' with field='call'), does not state the return format for get or clear operations (only last_record/all_records mention ADIF), and does not explain behavior when setting a gettable-only field. These are important for correct invocation, so completeness is only partial.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It does so by explaining the operation values (get, set, clear, last_record, all_records), enumerating valid field names, and clarifying that contest_counter is set-only. This gives the agent meaning for the 'operation', 'field', and 'value' parameters beyond the bare schema, even though it does not explicitly map each parameter to a formal description.

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

Purpose4/5

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

The description clearly states the tool manages 'Logbook (QSO / contest) fields' and enumerates operations (get, set, clear, last_record, all_records) and field categories (settable vs gettable). It is specific about the resource and actions, making the purpose unambiguous. However, it does not explicitly differentiate from sibling tools like flmsg or fldigi_call that might also touch logging, so it misses a point for explicit sibling distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, nor any conditions or exclusions. It lists operations and fields but does not explain scenarios where log is preferred or not appropriate. The agent is left to infer usage from the tool name and field lists, which is insufficient given the many sibling tools.

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

modemC

Operating mode (the fldigi "Op Mode" menu) and modem settings. operations: get, list, get_id, get_max_id, set (value=mode name e.g. 'BPSK31'), set_by_id (value=id), get_io_names (modems usable for KISS/ARQ I/O), get/set/inc_carrier, get/set/inc_afc_range, get/set/inc_bandwidth, get_quality, search_up, search_down, olivia_get/set_bandwidth, olivia_get/set_tones.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNo
operationYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits on its own. It only lists operations like get/set/inc_carrier and search_up/down without explaining side effects, state changes, return values, or preconditions. The 'set (value=mode name)' example hints at mutation but leaves the behavior largely undisclosed.

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

Conciseness4/5

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

The description is compact and front-loaded with purpose, followed by a dense but readable list of operations and examples. It contains no filler, though the flat prose list could be structured more clearly as separate entries.

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

Completeness2/5

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

Given the large number of operations, two opaque parameters, no annotations, and no output schema, the description is not complete enough for reliable invocation. It omits operation-specific semantics, return values, and required arguments beyond a couple of examples.

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

Parameters3/5

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

The input schema has 0% description coveragewing, but the description compensates partially by listing valid operation values and giving examples for 'value' (e.g., 'BPSK31', id). However, it does not define the expected type or requirement of 'value' for every operation, so the parameter semantics remain incomplete.

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

Purpose4/5

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

The description clearly identifies the tool's domain: fldigi operating mode and modem settings, then enumerates the supported operations. It is specific enough to distinguish the modem tool from siblings like rig or frequency, though it does not explicitly compare itself to them.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool instead of related sibling tools such as rig, controls, or frequency. The operation list implies possible sub-actions, but it does not describe situational selection criteria, prerequisites, or exclusions.

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

rigA

Rig (CAT) control via flrig/Hamlib/RigCAT. operations: get/set_name, get/set_frequency (value=Hz), get/set_mode (value=name), get_modes, set_modes (value=[...]), get/set_bandwidth, get_bandwidths, set_bandwidths (value=[...]), get/set_notch, enable_qsy (value=1|0), set_smeter / set_pwrmeter (value=int, drives fldigi's meter display).

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNo
operationYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It discloses value formats and notes that set_smeter/set_pwrmeter drives fldigi's meter display, but it doesn't describe side effects of set operations, permissions, or failure behavior.

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

Conciseness4/5

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

The description is front-loaded with the tool's purpose and backend, then presents a compact operation list. It is dense but not bloated, though the long run-on list could be slightly better structured.

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

Completeness3/5

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

For a two-parameter dispatch tool, the description covers most operation semantics and value formats, which is useful given the sparse schema. But with no output schema, it omits return/confirmation behavior for get operations and gives no error-handling guidance, so it isn't fully complete.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It does explain value semantics for frequency, mode, bandwidths, qsy, and meter operations, which is essential. However, value types for some operations such as get/set_name, get_modes, and get/set_notch remain unspecified.

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

Purpose4/5

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

The description clearly identifies the tool as CAT/rig control via flrig/Hamlib/RigCAT and enumerates a concrete set of operations, so an agent can infer what resource it acts on. It doesn't explicitly contrast itself with siblings like 'frequency' or 'controls', so it stops short of a 5.

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

Usage Guidelines4/5

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

The phrase 'Rig (CAT) control' plus the operation list gives clear context for when the tool is relevant. However, it never states when not to use it or names alternatives among the sibling tools, leaving some routing decisions to inference.

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

rsidB

RSID bursts the detector heard: which modes were announced in the passband and where, as {utc, mode, hz} entries since the last clear. Works with fldigi's RSID set to notify-only (RxID on, "do not change modem"), so the current modem keeps decoding while the list tells you what else is on. operations: hits, clear, available.

Needs a fldigi built with the rsid-hits patch in fldigi-mcp/patches; on stock 4.2.13 the tool says so instead of failing. Receive only.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationNohits

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description must carry the burden. It discloses the patch requirement, states 'Receive only,' and explains that on stock 4.2.13 it says so instead of failing. However, it does not describe side effects of the 'clear' operation or detail the return format for all operations (e.g., 'available'), leaving some behavioral ambiguity.

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

Conciseness4/5

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

The description is a single paragraph that front-loads the main purpose, then provides operational details and prerequisites. It is concise and well-structured, with no redundant sentences, and each sentence earns its place.

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

Completeness3/5

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

The tool has one parameter, no output schema, and no annotations, so the description must carry the load. It covers purpose, operations, prerequisites, and stock behavior, and even specifies the output format for hits as {utc, mode, hz}. However, it does not fully describe return values for all operations (e.g., 'available') or the exact effect of 'clear', making it adequate but not exhaustive.

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

Parameters3/5

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

The schema has one 'operation' parameter with 0% description coverage. The description lists the possible values (hits, clear, available), which adds meaning beyond the schema. However, it does not elaborate on what each operation does or its expected behavior, so the semantics are only partially defined.

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

Purpose4/5

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

The description clearly states the tool reports RSID bursts as {utc, mode, hz} entries since the last clear, and lists the operations (hits, clear, available). It distinguishes the tool's role in monitoring passband modes without switching the modem, giving it a specific purpose. However, it does not explicitly differentiate from a sibling tool, so it's clear but not fully differentiated.

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

Usage Guidelines3/5

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

The description explains when to use it: when fldigi's RSID is in notify-only mode, so the current modem keeps decoding. It also mentions the patch prerequisite and the behavior on stock. However, it does not reference alternative tools or provide explicit 'use this instead of X' guidance, leaving the decision partially to the agent.

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

signal_huntA

Find and name the signals in the receiver audio and rank them the way a contest operator reads the waterfall: the station that sits still and calls CQ scores highest.

method 'audio' (default): tap seconds of audio from the input device (FLDIGI_AUDIO_DEVICE, the device fldigi listens on; or device as a name substring or index; wav analyses a file instead). Needs the optional extra: pip install 'fldigi-mcp[hunt]'. method 'devices': list the input devices the tap can open. method 'browser': read fldigi's Signal Browser (needs the browser patch, see the browser tool): one candidate per channel the decoder bank holds, with its text, for the current modem family (PSK, RTTY or CW). Finds stations the spectrum analyser ranks near the floor, but names no mode: it reports what fldigi is set to. method 'api': blind fallback with no audio access; steps modem.search_up across the passband for each modem (mode='RTTY,BPSK31,...') and reads modem.get_quality. Slow.

Each candidate carries carrier_hz, mode (RTTY with shift, CW, BPSK31/63/125, Olivia with tones and bw, MFSK16, DominoEX, MT63, or unknown), db_over_floor, persistence (fraction of the window it was present), periodicity (a CQ loop repeats), score, and fldigi_modem, the name tune_to needs. Nothing here transmits.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
wavNo
modeNo
deviceNo
methodNoaudio
secondsNo

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden, and it is transparent: 'Nothing here transmits', browser only reports what fldigi is set to and names no mode, api is slow, and each candidate's fields are enumerated. This gives an agent accurate expectations without needing annotations.

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

Conciseness4/5

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

The description is long but dense and front-loaded with the core purpose. Each method and output field earns its place, though the prose-heavy format could be slightly more scannable with bullets or explicit parameter labels.

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

Completeness4/5

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

Given no annotations and no output schema, the description is remarkably complete: it covers all modes of operation, return-value shape, dependencies, and behavioral caveats. Missing details are limited to the top parameter and some error/edge-case behavior, which prevents a perfect score.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains method, device, seconds, wav, and partially mode via the api example, but never defines the top parameter or clarifies how mode behaves for the audio and browser methods. This is a minor gap in an otherwise strong explanation.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Find and name the signals in the receiver audio and rank them...'. It also clarifies the ranking rationale with the contest-operator waterfall analogyтные and distinguishes methods so an agent can infer what the tool does relative to siblings like browser and tune_to.

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

Usage Guidelines5/5

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

Each method is given an explicit context: audio is the default, devices lists input devices, browser is for near-floor stations that the spectrum analyser misses, and api is a blind fallback with no audio access. It also states prerequisites such as the optional 'hunt' package and the browser patch, and notes that api is slow.

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

spotC

Spotting / PSK Reporter. operations: get_auto, set_auto (value=bool), toggle_auto, pskrep_count.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNo
operationYes

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral traits such as whether operations are destructive, require authentication, or have side effects. The listed operations suggest configuration and reporting, but this is inferred rather than stated.

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

Conciseness3/5

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

The description is very short and to the point, but it is not well-structured. It uses periods and line breaks in a way that could be clearer. It is concise but lacks organization.

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

Completeness2/5

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

With no output schema and no annotations, the description is incomplete. It does not explain what each operation does, what the return values are, or any potential side effects. The tool's complexity (multiple operations) demands more detail.

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

Parameters3/5

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

The description adds some meaning to the parameters by indicating that 'value' is a bool for 'set_auto'. However, it does not explain the 'value' parameter for other operations, and the schema coverage is 0%, so the description only partially compensates for the lack of schema descriptions.

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

Purpose3/5

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

The description mentions 'Spotting / PSK Reporter' and lists operations, giving a general idea of the tool's domain. However, it lacks a clear verb-resource statement and does not fully explain what 'spotting' entails, leaving some ambiguity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus sibling tools like 'frequency' or 'log'. The description does not state any prerequisites or context, leaving the agent without decision support.

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

statusB

Snapshot: version, modem, frequency (Hz), TX/RX state, transmit gate, region, band.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided. The description does not disclose side effects, permissions, or whether the tool is read-only. It only describes the output snapshot without 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.

Conciseness5/5

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

One short sentence that conveys the tool's output efficiently. No unnecessary words or repetition. Perfectly concise.

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

Completeness3/5

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

Given no output schema and no annotations, the description lists output fields but lacks types or value ranges. It provides a reasonable idea of what the tool returns but could be more detailed for an unparameterized tool.

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

Parameters4/5

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

There are zero parameters, so the input schema fully defines all parameters. The description adds no parameter info because none is needed. Baseline 4 for 0-parameter tools is appropriate.

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

Purpose4/5

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

The description clearly states it provides a 'Snapshot' of specific status fields (version, modem, frequency, TX/RX state, etc.), making the purpose evident. It distinguishes itself from sibling tools like 'frequency' or 'modem' by being a composite view, though not explicitly.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. No mention of prerequisites, context, or when not to use it. The description only lists output fields.

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

textC

RX/TX text and data. operations: read (decoded RX text; start/length), rx_length, get_rx (value=[start, length], the raw byte range), clear_rx, add_tx (value=text), add_tx_queue, add_tx_bytes (value=text or bytes), clear_tx, get_rxtx_data, get_rx_data, get_tx_data.

add_tx / add_tx_bytes only stage text in the TX widget; they do not transmit.

ParametersJSON Schema
NameRequiredDescriptionDefault
startNo
valueNo
lengthNo
operationYes

TDQS

C2.9/5.0
Behavior3/5

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

The description discloses that add_tx/add_tx_bytes only stage text and do not transmit, which is a non-obvious behavior. However, with no annotations, the description carries the full burden and it does not mention side effects of clear operations, return values, or permissions, so it's only partially transparent.

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

Conciseness3/5

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

The description is a single paragraph with a list of operations. It's concise but not well-structured; it dumps a list without grouping or front-loading the most critical information. It's adequate but could be more readable.

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

Completeness2/5

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

The tool has 4 parameters, no annotations, and no output schema. The description lists operations but lacks details on return values, error conditions, and the context (e.g., which modem it applies to). It also doesn't explain the difference between get_rxtx_data, get_rx_data, get_tx_data. This is incomplete for an agent to use it correctly.

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

Parameters3/5

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

The schema has no descriptions, so the description must explain parameters. It does explain start, length, and value in the context of operations (e.g., read uses start/length, get_rx uses value as [start, length]). However, not all parameters are fully described (e.g., operation has no enum, but the list of operations gives meaning). Some operations like add_tx_queue are not explained in terms of parameters.

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

Purpose4/5

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

The description states it handles RX/TX text and data and lists specific operations (read, rx_length, get_rx, etc.), making the resource and actions clear. However, it does not explicitly distinguish itself from sibling tools like transmit or modem, so it doesn't earn a 5.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It doesn't mention any exclusions or comparisons to other tools. The only usage note is that add_tx stages text without transmitting, which is a behavioral detail but not a usage guideline for tool selection.

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

transmitA

Transmitter control. operations: tx, tune, rx, abort, disable_tx, enable_tx, run_macro (value=id), get_max_macro_id, send (text=...), and timing information: tx_timing (value=test string), char_rates, char_timing (value=one character); both timings return 'samples : sample rate : seconds'.

Keying operations (tx, tune, run_macro, send) require a configured callsign; rx, abort, disable_tx and the timing operations never key and are always allowed. send queues text and transmits, auto-returning to receive by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
valueNo
operationYes
return_to_rxNo

TDQS

A3.6/5.0
Behavior4/5

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 it discloses meaningful behavior: keying vs. non-keying operations, callsign requirements, that rx/abort/timing operations are always allowed, and that send auto-returns to receive. This goes well beyond a basic statement of function, though it still omits details like error behavior or state changes from abort/disable_tx.

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

Conciseness5/5

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

The description is dense but every sentence earns its place: an overview, an operations list, a keying-behavior note, and the send auto-return default. It is front-loaded with 'Transmitter control' and the operation list, with no filler or repetition.

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

Completeness3/5

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

The tool is complex with many operations, four parameters, no annotations, and no output schema, so the description must cover a lot. It covers operation semantics, timing return formats, keying restrictions, and the send default, but leaves unclear the full set of operation-specific value formats, especially for tune, and does not describe response/error behavior. It is adequate but has clear gaps.

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

Parameters4/5

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

Schema description coverage is 0%, so the description compensates by explaining the operation string valuesgcd, including run_macro's value as an id, tx_timing's value as a test string, char_timing's value as a single character, and send's text parameter. It does not fully explain the value parameter for tune or all possible operation values, but it adds substantial meaning beyond the bare schema.

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

Purpose4/5

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

The description clearly states the tool is 'Transmitter control' and enumerates specific operations (tx, tune, rx, abort, etc.), making the resource and available actions explicit. It does not explicitly differentiate from sibling tools like fldigi_call or tune_to, but the operation list and transmitter focus give sufficient clarity.

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

Usage Guidelines2/5

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

The description provides internal guidance about which operations key the transmitter and callsign requirements, but it does not state when to use this tool versus sibling alternatives such as rig, modem, tune_to, or fldigi_call. There is no explicit 'use this for X, use that for Y' routing, leaving tool-selection guidance mostly absent.

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

tune_toA

Set fldigi to a signal_hunt candidate: modem by fldigi name (e.g. 'RTTY', 'BPSK31', 'OLIVIA-8/250', 'MFSK16', 'DOMEX11', 'MT63-500'), the audio carrier, AFC on, and RxID off by default so another station's RSID burst cannot retune the modem mid-pass. Read the result with text read after 20 seconds; modem get_quality says whether it locked. Does not transmit.

ParametersJSON Schema
NameRequiredDescriptionDefault
afcNo
rxidNo
carrier_hzYes
fldigi_modemYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries full behavioral burden. It discloses that AFC is on and RxID is off by default, explains why RxID is off (to prevent retuning), and explicitly states it does not transmit. This provides a clear safety profile and operational behavior, though it doesn't mention any other side effects or requirements.

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

Conciseness4/5

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

The description is somewhat long but every sentence adds value. It front-loads the purpose, then details settings, then provides follow-up verification steps. The structure is logical and efficient, though it could be slightly more concise without losing information.

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

Completeness4/5

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

For a tuning tool with no output schema and no annotations, the description is fairly complete. It covers what it does, parameter details, behavioral defaults, and how to verify success. It doesn't mention error conditions or prerequisites, but for this type of tool it is adequate.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must explain all parameters. It does: fldigi_modem with examples, carrier_hz as 'audio carrier', afc default on, rxid default off, and the rationale for rxid. This adds meaning far beyond the schema, which has no parameter descriptions.

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

Purpose5/5

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

The description clearly states the tool's action: 'Set fldigi to a signal_hunt candidate' and specifies the key settings (modem, carrier, AFC, RxID). It includes concrete examples of modem names and explicitly states 'Does not transmit,' distinguishing it from transmit tools. The purpose is specific and unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context: it is for signal_hunt candidates and it tells the user to read the result via 'text' and check lock via 'modem get_quality.' It implies when to use it (when tuning to a candidate) but doesn't explicitly mention alternatives or when not to use it beyond 'Does not transmit.' However, the follow-up steps are helpful for correct usage.

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

wefaxC

WEFAX (weather fax) mode. operations: state, skip_apt, skip_phasing, tx_abort, end_reception, start_manual_reception, set_adif_log (value=bool), set_max_lines (value=int), get_received_file (value=timeout), send_file (value=[filename, timeout_seconds]).

send_file transmits and is callsign-gated.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNo
operationYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that send_file transmits and is callsign-gated, which is useful, but it does not disclose the behavior of other operations, side effects, state changes, or what happens during reception/transmission. The description is a terse list of operation names without 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.

Conciseness3/5

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

The description is compact and front-loads the mode name, but the operation list is dense and lacks formatting that would aid scanning. The final sentence about send_file is useful but could be integrated with the operation list. It is not overly verbose, but it sacrifices clarity for brevity.

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

Completeness2/5

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

For a tool with 2 parameters, no output schema, and no annotations, the description is incomplete. It does not explain the return values, error conditions, or the behavior of each operation. The callsign-gating note for send_file is a good start, but many operations (e.g., skip_apt, skip_phasing, tx_abort) are left entirely unexplained, making it hard for an agent to know when and how to invoke them.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the schema's lack of parameter documentation. The description lists operation names and some value types (bool, int, timeout, [filename, timeout_seconds]), but it does not explain the meaning of the 'value' parameter in general, nor does it document the 'operation' parameter beyond listing possible values. The value types are helpful but incomplete.

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

Purpose4/5

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

The description identifies WEFAX as a weather fax mode and enumerates its operations, which gives a clear sense of the tool's purpose. However, it does not explicitly state what the tool does in a single verb+resource form, and the operation list is presented as a flat enumeration without explaining what each operation accomplishes.

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

Usage Guidelines3/5

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

The description implies usage by listing operations, and it notes that send_file is callsign-gated, which is a usage constraint. However, it does not provide guidance on when to use this tool versus alternatives like navtex or fldigi_call, nor does it explain which operation to choose in a given context.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.4.0
    • Addedrsid
  2. 6 tool updatesv0.3.1
    • Addedbrowser
    • Addedflmsg
    • Addedio
    • Addedlegacy
    • Addedsignal_hunt
    • Addedtune_to
  3. 15 tool updatesv0.1.1
    • First observedapplication
    • First observedband_guidance
    • First observedcontrols
    • First observeddiagnostics
    • First observedfldigi_call
    • First observedfrequency
    • First observedlog
    • First observedmodem
    • First observednavtex
    • First observedrig
    • First observedspot
    • First observedstatus
    • First observedtext
    • First observedtransmit
    • First observedwefax

TDQS

C2.9/5.0

Scored across 22 tools

Disambiguation2/5

Several tools overlap in triggering technical operations (e.g., 'legacy' deprecated methods mixed with 'fldigi_call' escape hatch and 'transmit' keying operations create ambiguity about which to use). Additionally, 'controls' vs 'status' fields are not clearly delineated from 'application' info operations, and 'signal_hunt' and 'browser' both serve signal detection, though with different methods.

Naming Consistency2/5

Naming is inconsistent: some tools use single-word verbs (status, legacy, transmit, rig, log, text) while others use compound nouns (signal_hunt, tune_to, band_guidance, wefax, navtex). Operations within tools are mostly verb_noun (get/set/toggle) but the tool-level names mix styles, and 'legacy' is a category name not a clear action.

Tool Count3/5

22 tools is on the higher side but not extreme, given fldigi's broad feature set (transmit, rig, modem, log, text, special modes). However, some tools like 'legacy' and 'fldigi_call' add bulk without distinct value, making the count feel heavier than needed; a leaner set around 15 would be more appropriate.

Completeness4/5

The server covers core fldigi operations well: transmit, receive, modem control, frequency, log, text, rig, special modes (WEFAX, NAVTEX), and diagnostics. Minor gaps include lack of a direct receive-while-transmitting control, but the 'transmit' send with auto-return and 'text' read cover most workflows. The presence of 'legacy' and 'fldigi_call' suggests full reachability, but they are fallback rather than missing functionality.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for HamQTH.com — callsign lookup, DX cluster spots, Reverse Beacon Network, DXCC resolution, and more through any MCP-compatible AI assistant.
    8
    GPL 3.0
  • A
    license
    A
    quality
    A
    maintenance
    Enables logging amateur-radio QSOs to N3FJP logging software via MCP tools, including automatic logging, dupe checking, and band/mode management.
    10
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    An MCP server that controls WSJT-X for amateur radio weak-signal modes (FT8/FT4, etc.) via UDP, enabling observation of status and decodes, and transmit operations like replying to CQs or sending free text.
    14
    MIT