Skip to main content
Glama
matsvandamme

fishball-sdr-mcp

by matsvandamme

Capture IQ to a file

sdr_capture_iq

Capture raw IQ samples to a file, return the file path and level statistics. Suitable for GNU Radio and sdr_transmit_iq, with interleaved little-endian int16 format.

Instructions

Capture raw IQ samples and WRITE THEM TO A FILE, returning the path plus level statistics. Samples are never returned inline - even a short capture is megabytes. The file is interleaved little-endian int16 (I,Q,I,Q,...), which GNU Radio reads as a file source of type short, and which sdr_transmit_iq accepts directly.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
samplesNoSamples per channel
filenameNoName within the capture directory
channel_pairNo0 or 1
response_formatNomarkdown for reading, json for structured outputmarkdown

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations, the description discloses key behavior: samples are written to a file rather than returned inline, the response includes path and level statistics, files can be large, and the exact binary layout is specified. This gives an agent an accurate model of what will happen when the tool runs.

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 tight and well-ordered: the core action is front-loaded, then the critical 'never inline' caveat, then the file format and compatibility notes. Every sentence contributes useful information without repetition.

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?

For a 4-parameter tool with an output schema and annotations, the description covers what the tool does, what it returns, why inline returns are infeasible, and how the output can be consumed. No critical operational detail appears missing for correct invocation.

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 100%, so all four parameters are already documented in the schema. The description adds no additional parameter-level meaning, which is fine because the schema carries the burden; baseline 3 applies.

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 names a specific verb and resource: capture raw IQ samples and write them to a file, returning the path plus level statistics. It also differentiates from sibling tools by contrasting with sdr_transmit_iq, which consumes the produced file.

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 gives clear context: this tool is for file-based IQ capture, not inline sample return, and the file can be fed to GNU Radio or sdr_transmit_iq. It does not explicitly enumerate when not to use it, but the 'never returned inline' statement and file-format notes provide solid usage framing.

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