MCP server for SmartSDR radio control with CW/SSB listening, contest automation, DX hunting, and band scouting
Scoring was not performed
No visible output schemas for any tool. Tool responses are serialized JSON but the structure is undocumented. LLMs cannot plan downstream operations without knowing what fields are returned.
Many parameter schemas are defined inline as type+description but lack formal JSON Schema with proper constraints. For example, 'fixedWpm' in cw_listener_start accepts an integer but does not constrain the range (should be 0 - 50 WPM for Morse).
Domain-specific terminology without fallback explanations. Terms like 'DAX channel', 'QSO state', 'DXCC entity', 'DX spot', and 'Band Scout' are radio-jargon. Descriptions should either define these inline ('DAX channel: digital audio interface channel for SmartSDR') or provide example values to orient LLMs unfamiliar with amateur radio.
Error handling is ad-hoc. Some tools return user-friendly messages ('Not connected to a radio. Call connect_radio first.') but others silently fail or return raw exceptions. No consistent error categorization (retryable vs user-fixable vs fatal) visible in source.
Several tools have ambiguous or vague names. 'run_macro' does not indicate what the tool does, it must be 'run_cw_macro' or 'run_contest_macro'. LLMs cannot infer intent from 'run_macro' alone. Similarly, 'clear_pending_replies' lacks context, should it be 'clear_cw_pending_replies'?
No visible input validation beyond type checking. For example, 'format' parameter in record_audio_start accepts 'wav or raw' but there is no enum constraint. Free-form strings invite LLM hallucinations like 'mp3' or 'flac'.
Tools that modify state (cw_send_text, cw_abort, contest_agent_start) do not declare a confirmation/dry-run pattern. 'cw_send_text' marks Risk=DESTRUCTIVE but provides no way to preview the message before sending. Agents could accidentally transmit nonsense.
Dependency hints are missing. For example, dx_hunter_start requires dx_hunter_load_log to be called first, but the description does not state this prerequisite. Similarly, contest_agent_start requires ANTHROPIC_API_KEY environment variable, this should be documented and validated.
No visible support for pagination or result limiting in tools that return lists (band_scout_report, cw_get_recent_messages, dx_hunter_needs). If a tool returns 100s of results, the context window could be exhausted.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 16 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 39 | - | v1 |