MCP server for PodcastIndex.org API - search podcasts, episodes, trending, and more
Server has 25 tools with consistent naming (verb_noun pattern: podcast_*, episode_*, recent_*, value_*, stats_*, categories_*, hub_*) and descriptions present for all. However, 3 tools (value_get_byfeedid, value_get_byfeedurl, value_get_bypodcastguid) lack visible input schemas in source, and descriptions vary widely in quality (10-200 chars). Most parameters have descriptions, but some lack type constraints (e.g., 'lang' and 'cat' filters accept free-form strings without enum constraints). Output schemas are not documented. Error handling exists but lacks recovery guidance. Composition is sound, tools chain well via IDs, but parameter validation and LLM-optimized descriptions need improvement.
Get a list of all available podcast categories.
Get episodes for a podcast by feed ID.
Get episodes for a podcast by feed URL.
Get a specific episode by its GUID. Requires feedid, feedurl, or podcastguid.
Get a specific episode by its ID.
Get currently live podcast episodes.
Three value_* tools (value_get_byfeedid, value_get_byfeedurl, value_get_bypodcastguid) have no visible input schemas or descriptions in source code.
Eight 'podcast_get_*' and 'podcast_get_dead' tools have minimal descriptions (10-50 chars). E.g., 'Get podcast information by PodcastIndex feed ID' does not explain when to use this vs other lookup methods.
Filter parameters ('lang', 'cat', 'notcat') across 8+ tools accept free-form strings without enum constraints or format documentation. LLMs will hallucinate invalid language codes and category names. Should declare valid values or link to categories_list.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Get random episodes. Can filter by language and category.
Notify PodcastIndex that a podcast feed has been updated. Provide either feed ID or URL. No authentication required.
Get podcast information by PodcastIndex feed ID.
Get podcast information by feed URL.
Get podcast information by podcast GUID.
Get podcast information by iTunes/Apple Podcasts ID.
Get list of dead/inactive podcast feeds.
Get currently trending podcasts. Can filter by language and category.
Find podcast episodes featuring a specific person by name. Use this whenever the query is a person's name (e.g. "David Deutsch", "Lex Fridman"). Returns episodes where that person appears as host, guest, or contributor.
Search for podcasts by keyword or topic. Searches podcast title, author, and description fields. NOT for finding a specific person — use podcast_search_byperson instead when the query is a person's name.
Search for podcasts by title only. More precise than byterm for title-specific searches.
Search for music podcasts specifically. Returns podcasts tagged with the "music" medium.
Get recently published episodes across all podcasts.
Get recently updated podcast feeds.
Get newly added podcast feeds to the index.
Get current PodcastIndex database statistics (total feeds, episodes, etc.).
Get value/payment information for a podcast by feed ID.
Get value/payment information for a podcast by feed URL.
Get value/payment information for a podcast by podcast GUID.
Output schemas are not documented in tool definitions. LLMs cannot plan downstream calls or extract required fields (e.g., feed_id for chaining). Responses likely include verbose API metadata not stripped for chat context.
Error handling in server.ts (AuthenticationError, PodcastIndexError) exists but error messages lack recovery guidance. E.g., 'Missing API credentials' tells LLM to stop; should suggest 'Set PODCASTINDEX_API_KEY and PODCASTINDEX_API_SECRET, then retry.'