Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

API

REST, WebSocket, and MCP drive the same live receiver as the interface. Changes reach every connected client.

EndpointServes
/api/docsSwagger UI
/api/openapi.jsonOpenAPI schema
/api/wsWebSocket
/mcpMCP over streamable HTTP

The OpenAPI schema is also in the repository, for generating clients without a running server.

With a token set, send it on every request:

curl -H "Authorization: Bearer $SDRMM_TOKEN" http://receiver.local:8080/api/state

REST

AreaRoutes
State and discovery/api/state, /api/devices, /api/channeltypes, /api/clients
Live receiver/api/devicesets: settings, channels, scanning, recording, playback
Workspaces/api/workspaces: activate, apply, undo, redo, export, import
Saved setups/api/templates, /api/presets, /api/bookmarks
Data/api/decoderlog, /api/recordings, /api/images, downloads
Reference/api/bandplan/regions, /api/about, /api/doctor

Errors are JSON with error and an optional detail.

WebSocket

The WebSocket carries commands, decoder events, scanner progress, and binary spectrum, audio, and video. When it says some state changed, fetch that state again through REST. Stream IDs belong to one connection. The web client in web/src is the reference implementation.

MCP

Point an MCP client at http://<server>:8080/mcp, with the bearer header if a token is set. Its tools open and tune radios, add and remove channels, scan, record, read decoded history, grab spectrum snapshots, and run the tools such as the NanoVNA.