MCP server for searching live radio stations and podcasts worldwide from the Radio FM catalogue
Single tool 'radiofm' with comprehensive schema definition, extensive description, and detailed parameter documentation. The description is unusually thorough (multi-paragraph with 25+ examples), exceeding typical production style but providing strong LLM guidance. Input schema is complete with proper types, enums, and descriptions for all 11 parameters. Output schema is minimal but present. Naming is clear but lacks action verb convention. Risk is READ_ONLY, indicating no mutation concerns. The server provides a single specialized search function with well-documented constraints and filter logic.
Search live radio stations and podcasts worldwide from the Radio FM catalogue. Radio-only requests hit the radio filter, podcast-only requests hit the podcast filter, and anything else runs a combined search. FILTER RULE - CRITICAL: only populate a filter the user EXPLICITLY mentioned. Never infer one filter from another: a city does not imply a state, and a country does not imply a language (India does NOT mean Hindi). Do not copy a location, language or genre into `query` - each belongs in its own field. `query` is for a station or podcast NAME only; leave it empty for any browse request. Examples: "stations in Mumbai" -> city="Mumbai", content_type="radio" "radio in Texas" -> state="Texas", content_type="radio" "top radio" -> query="", content_type="radio" (no limit - return the full list) "top 10 radio stations" -> query="", limit=10, content_type="radio" "top radio in India" -> query="", loc="IN", content_type="radio" "hindi stations in Delhi" -> city="Delhi", lc="hi", content_type="radio" "jazz stations" -> genre="jazz", content_type="radio" "most favourite radio in India" -> query="", loc="IN", sort="favourites", content_type="radio" "indian podcasts" -> query="", loc="IN", content_type="podcast" "comedy podcasts" -> query="", genre="comedy", content_type="podcast" "hindi podcasts" -> query="", lc="hi", content_type="podcast" "podcasts from Noida" -> query="", city="Noida", state="Uttar Pradesh", loc="IN", content_type="podcast" "Saharanpur radio" -> query="", city="Saharanpur", state="Uttar Pradesh", loc="IN", content_type="radio" When a city is named, ALWAYS fill in the wider places it sits in too: `state` and `loc` (Saharanpur -> city="Saharanpur", state="Uttar Pradesh", loc="IN"). A small city often has no stations of its own, and those wider fields are what the search falls back to. Spell the state out in full - "Uttar Pradesh", not "UP". "BBC" -> query="BBC" (everything else empty) Only set `limit` when the user asked for a specific number. A plain "top radio" request wants the full list, not one station.
Tool name 'radiofm' lacks action verb prefix. Should be 'search_radio' or 'search_podcasts' to follow verb_noun convention and clarify action intent for LLM tool selection.
Output schema omits response data rows in advertised schema (only counts returned). Per comment 'station and podcast rows travel in _meta', actual content is hidden from LLM context. This violates transparency, LLMs cannot plan downstream use of data they cannot see described.
Description is 2000+ characters and includes 25+ examples in the docstring. While this provides explicit filter rules, it bloats token count and buries key information. Best practice is 50-200 chars with example values in parameter descriptions or enums, not tool description.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 46 | 2024-11-05+ | v1 |