fldigi-mcp
Control the fldigi amateur-radio digital-modem application via MCP, covering receive monitoring through transmitting digital modes. All transmit operations are callsign-gated (require FLDIGI_CALLSIGN set), keeping the station receive-only by default.
Status & Diagnostics
Snapshot of fldigi state (version, mode, frequency, TX/RX, callsign, band)
Host/network diagnostics independent of fldigi connection
Application Control
Get program info, list available XML-RPC methods, launch/stop/terminate fldigi
Modem / Operating Mode
Get/set mode (BPSK31, RTTY, JS8, etc.) by name or ID; adjust carrier, bandwidth, AFC range; configure Olivia settings; search for signals
Frequency Control
Get/set/increment dial frequency (Hz); get/set waterfall sideband (USB/LSB)
Operating Controls
Toggle/set AFC, Squelch, Reverse, Lock, RxID, TxID; read transceiver status fields
Transmitter Control (callsign-gated)
Key TX, tune, return to RX, or abort; enable/disable TX; run macros; send text (auto-returns to RX)
Rig / CAT Control
Get/set rig frequency, mode, bandwidth, notch via flrig/Hamlib/RigCAT; take/release CAT control
Logbook
Get/set QSO/contest fields (call, name, RST, locator, exchange, etc.); clear log; retrieve last or all records in ADIF format
RX/TX Text & Data
Read decoded RX text, manage RX/TX buffers, stage TX text, retrieve raw data streams
Spotting / PSK Reporter
Get/set/toggle auto-spotting; query PSK Reporter spot count
WEFAX (Weather Fax)
Control reception/transmission, skip APT/phasing, configure ADIF logging and max lines (TX callsign-gated)
NAVTEX / SitorB
Receive NAVTEX messages; send NAVTEX messages (callsign-gated)
Band Guidance (experimental/advisory)
Look up band plan at a frequency, find watering holes for a mode, QSY dial to recommended frequency (no transmission)
Escape Hatch (fldigi_call)
Call any fldigi XML-RPC method directly by dotted name for undocumented or future methods; keying methods remain callsign-gated
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@fldigi-mcpset the mode to BPSK31"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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. Full API coverage, callsign-gated transmit, and an optional experimental Band Guidance feature. Tested against fldigi 4.2.x.
π» 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.11 via fldigi.list. 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 documented XML-RPC method is reachable, grouped into ~14 tools (one permission each) plus a
fldigi_callescape hatch for the long tail and future methods.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 syncThen 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.pyTools
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) |
| quick snapshot: version, mode, frequency, T/R, callsign, band |
| host/network info for connectivity troubleshooting (no fldigi connection) |
| program info + launch/stop the fldigi process ( |
| Op Mode / modem select, carrier, bandwidth, AFC range, Olivia |
| dial frequency and waterfall sideband |
| AFC, SQL, Rev, Lock, RxID, TxID, status fields |
| T/R, Tune, abort, disable/enable Tx, macros, send β callsign-gated |
| CAT control: mode, frequency, bandwidth, notch, QSY, take/release |
| Logbook / contest fields; ADIF last/all records |
| RX/TX text and data streams |
| spotting / PSK Reporter |
| WEFAX (weather fax) mode |
| NAVTEX / SitorB mode |
| advisory band/watering-hole help (experimental) |
| escape hatch β call any method by name, incl. future ones |
Use application β list_methods to enumerate every method the running build
supports; anything not surfaced in a group is reachable via fldigi_call.
Configuration
Variable | Default | Purpose |
|
| fldigi XML-RPC host |
|
| fldigi XML-RPC port |
| (empty) | Operator callsign. The single transmit gate β set it to enable transmit; blank keeps the station receive-only |
|
| Experimental advisory band guidance. |
|
| IARU region for band guidance: |
| (auto) | Explicit path to the fldigi executable (for |
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.50Manage 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:
fldigi-operating β TX/RX handoff done right (
^rreturn-to-receive viatransmit β send,abortas 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 Operating Skills Field Guide
(PDF) documents this skill and its 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
MIT Β© 2026 Stefan Brunner (AE5VG)
Available Tools
15 toolsapplicationC
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.
| Name | Required | Description | Default |
|---|---|---|---|
| save_log | No | ||
| operation | Yes | ||
| save_macros | No |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| band | No | ||
| mode | No | ||
| operation | Yes | ||
| frequency_hz | No |
TDQS
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.
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | ||
| operation | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| method | Yes | ||
| params | No |
TDQS
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.
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.
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.
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.
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.
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.
frequencyC
RF frequency and waterfall sideband. operations: get, set (value=Hz), increment (value=Hz), get_sideband, set_sideband (value='USB'|'LSB').
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | ||
| operation | Yes |
TDQS
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.
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.
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.
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.
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.
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.
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. Gettable fields also include frequency, time_on/off, serial_number_sent, state, province, country, band, notes, az. last_record / all_records return ADIF.
| Name | Required | Description | Default |
|---|---|---|---|
| field | No | ||
| value | No | ||
| operation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that some fields are settable and some are gettable, and that last_record/all_records return ADIF. However, it does not mention any side effects, permissions, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, using two sentences to convey operations and field categories. It is front-loaded with the purpose and enumerates efficiently. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description partially explains return values (ADIF for last_record/all_records) but omits return formats for get, set, clear. It covers all operations and field lists, making it mostly adequate for a multi-operation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It does so by explaining the 'operation' parameter values and listing which fields are valid for 'field' in get vs set contexts. This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for Logbook fields and lists specific operations (get, set, clear, last_record, all_records). It distinguishes from sibling tools like 'frequency' or 'status' by specifying the context of QSO/contest log fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use each operation via the list of fields and operations, but does not explicitly state when not to use it or provide alternatives. For example, it doesn't guide against using 'set' when only read access is needed.
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/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.
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | ||
| operation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fails to disclose behavioral traits such as side effects, required permissions, or safety. It mentions 'set' operations implying mutation but offers no warnings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is an unstructured list of operations, not a concise statement. It lacks clear organization and repeats nouns unnecessarily.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (many sub-operations) and lack of output schema, the description is severely incomplete. It does not explain return values, error conditions, or the effect of each operation beyond naming.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description partially adds meaning by listing example values for 'set' (e.g., 'BPSK31'), but does not explain the 'value' parameter for other operations. Schema coverage is 0%, so the description adds some value but not enough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly indicates the tool deals with modem operating modes and settings, and lists specific operations. It differentiates from sibling tools which cover other aspects like frequency or rig control.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool or when to avoid it. The description lists operations but does not explain context or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rigC
Rig (CAT) control via flrig/Hamlib/RigCAT. operations: get/set_name, 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, take_control, release_control.
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | ||
| operation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry this burden. It lists operations like 'take_control' and 'release_control' but doesn't disclose whether any are destructive, require permissions, or have side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively short but is a run-on list of operations without clear structure. It could be more organized but is not excessively long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, annotations, and 0% parameter coverage, the description should provide more details on return values, operation-specific inputs, and behaviors. It lacks completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description lists operation names but does not explain the 'value' parameter for each operation. While it adds some meaning, it's insufficient for an agent to know how to construct valid inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it's for rig control and lists many operations (get/set frequency, mode, etc.), so the resource and actions are clear. However, it lacks a concise summary and is a bit messy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like 'frequency' or 'controls'. The list of siblings includes similar-sounding tools, but no differentiation is provided.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | ||
| operation | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
textB
RX/TX text and data. operations: read (decoded RX text), rx_length, clear_rx, add_tx (value=text), clear_tx, get_rxtx_data, get_rx_data, get_tx_data.
add_tx only stages text in the TX widget; it does not transmit.
| Name | Required | Description | Default |
|---|---|---|---|
| start | No | ||
| value | No | ||
| length | No | ||
| operation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that add_tx does not transmit, a key behavioral trait. It also enumerates valid operations. However, it does not explain the effects of clear_rx, clear_tx, or the return values of get_* operations. With no annotations, the description carries the full burden and only partially meets it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with three sentences covering the purpose, operation list, and a critical behavioral note. It is front-loaded and avoids unnecessary detail, though the list format could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters (0% schema coverage), no output schema, and no annotations, the description is insufficiently complete. It explains the 'operation' parameter but omits descriptions for other parameters and return values. More detail is needed for a tool with this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It lists valid operation values (e.g., read, add_tx, clear_rx), which adds meaning to the 'operation' parameter. However, it provides no explanation for the 'start', 'value', or 'length' parameters, leaving their semantics unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool is for 'RX/TX text and data' and lists specific operations (read, clear_rx, add_tx, etc.), which conveys the core purpose. However, it does not explicitly differentiate from sibling tools like 'transmit' or 'controls', leaving some ambiguity about when to use this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a critical note that 'add_tx only stages text; it does not transmit', which provides usage guidance for that operation. However, there is no general statement about when to use this tool versus alternatives, and the purpose of other listed operations is implied rather than explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transmitB
Transmitter control. operations: tx, tune, rx, abort, disable_tx, enable_tx, run_macro (value=id), get_max_macro_id, send (text=...).
Keying operations (tx, tune, run_macro, send) require a configured callsign;
rx, abort, and disable_tx are always allowed because they take the station off
the air. send queues text and transmits, auto-returning to receive by default.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | ||
| value | No | ||
| operation | Yes | ||
| return_to_rx | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that keying operations require a configured callsign and that rx/abort/disable_tx are always allowed (taking station off air). It also notes that 'send' auto-returns to receive. However, it omits error scenarios, rate limits, or other side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using two sentences. It front-loads the purpose ('Transmitter control') and then lists operations and key constraints. The list format is somewhat messy but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (multiple operations, 4 parameters, no output schema or annotations), the description lacks detail on what each operation does exactly, error conditions, return values, and the type of 'value' parameter. It leaves many gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the input schema by listing operation values (tx, tune, etc.), explaining that for run_macro the parameter 'value' is an id, and for 'send' the parameter 'text' is used. It also clarifies the default behavior of 'return_to_rx'. Schema coverage was 0%, so this is valuable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Transmitter control' and lists specific operations (tx, tune, rx, etc.), clearly indicating what the tool does. It distinguishes itself from sibling tools by focusing exclusively on transmitter operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal guidance on when to use this tool versus alternatives. It mentions that keying operations require a configured callsign, but does not compare with sibling tools like 'controls' or 'modem' to help the agent choose.
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, ...]).
send_file transmits and is callsign-gated.
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | ||
| operation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It only reveals that 'send_file transmits and is callsign-gated,' but omits effects, permissions, or side effects for other operations. This is insufficient for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with a front-loaded header. The list structure is functional but could be more readable (e.g., with line breaks). Every sentence adds value, though some operations lack context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10+ operations, 2 params, no output schema), the description is incomplete. It omits operation details, return values, prerequisites, and error conditions, making it insufficient for reliable agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It partially clarifies the 'value' parameter for set_adif_log, set_max_lines, get_received_file, and send_file. However, it does not describe the 'operation' parameter values beyond listing names, leaving meaning ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'WEFAX (weather fax) mode' and lists operations, clearly indicating the tool's domain. However, it does not explicitly differentiate from sibling modes like navtex, which could cause confusion for agents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description lacks context on prerequisites, exclusions, or typical scenarios, leaving the agent to infer usage from the operation list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
15 tool updates
v0.1.1- First observed
application - First observed
band_guidance - First observed
controls - First observed
diagnostics - First observed
fldigi_call - First observed
frequency - First observed
log - First observed
modem - First observed
navtex - First observed
rig - First observed
spot - First observed
status - First observed
text - First observed
transmit - First observed
wefax
TDQS
Each tool targets a distinct aspect of fldigi operation: process control, band guidance, UI controls, diagnostics, frequency, logging, modem, NAVTEX, rig control, spotting, status, text buffers, transmit, and weather fax. Even tools like 'text' and 'transmit' are clearly separated: text only stages/stores text, while transmit actually keys the radio. The escape hatch 'fldigi_call' is explicitly for methods not covered elsewhere, further reducing ambiguity.
Tool names are single lowercase nouns or noun phrases (e.g., 'band_guidance', 'fldigi_call', 'wefax'), consistent in style. However, operations within tools vary (get/set/toggle vs. list vs. run), but the tool-level naming is predictable and readable. The lack of a strict verb_noun pattern is a minor deviation from ideal consistency.
With 15 tools, the server is well-scoped for the fldigi domain. Each tool covers a logical subset of functionality, and none feel extraneous. The count is within the ideal range (3-15) and matches the complexity of a digital modem application.
The tool set covers the core fldigi workflows: launching, frequency/modem/rig control, logging, spotting, transmitting, and receiving. Minor gaps exist (e.g., audio device configuration), but the 'fldigi_call' escape hatch allows calling any XML-RPC method, ensuring no dead ends. Overall, the surface is quite complete for common tasks.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client β Claude, ChatGPT, Cursor, Cline, Windsurf.
- sentinelOAuthio.rootstuff
Uptime, SSL, DNS and domain monitoring you can talk to from Claude or any MCP client.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for HamQTH.com β callsign lookup, DX cluster spots, Reverse Beacon Network, DXCC resolution, and more through any MCP-compatible AI assistant.8GPL 3.0
- AlicenseAqualityAmaintenanceEnables logging amateur-radio QSOs to N3FJP logging software via MCP tools, including automatic logging, dupe checking, and band/mode management.10MIT
- AlicenseAqualityCmaintenanceAn 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.14MIT
- AlicenseNot gradedqualityAmaintenanceOperate packet-radio digipeater nodes from Claude and other MCP clients.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sbrunner-atx/fldigi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server