Podcast Index MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PODCASTINDEX_API_KEY | Yes | Your Podcast Index API key. Required for authentication. | |
| PODCASTINDEX_AUDIT_LOG | No | File path to write one JSON line per attempted write operation. | |
| PODCASTINDEX_READ_ONLY | No | Set to '1' to disable all write tools. | |
| PODCASTINDEX_API_SECRET | Yes | Your Podcast Index API secret. Required for signing requests. | |
| PODCASTINDEX_HTTP_TOKEN | No | Token required when running the server over HTTP to bind anything other than loopback. | |
| PODCASTINDEX_FILE_TIMEOUT_MS | No | Timeout in milliseconds for fetching transcript and chapter files from publisher hosts. | |
| PODCASTINDEX_ALLOW_DESTRUCTIVE | No | Set to '0' to keep the recrawl ping but block the two submit tools. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| statusA | Report whether the Podcast Index credentials are configured and working, how far this machine's clock is from the server's, and which tool groups are available. Call this first when anything is failing in a way that looks like a permissions or connectivity problem, rather than inferring the cause from an empty result. |
| search_podcastsA | Search the Podcast Index for shows by keyword, across title, author and owner. This is the general starting point when you have a topic or a name and need to find the show. Returns feeds with their Podcast Index feed id, which every other tool accepts. Matching is keyword-based rather than semantic, so two or three plain words work better than a sentence. |
| search_podcasts_by_titleA | Search shows by title alone, ignoring author and owner. Use this when you know roughly what a show is called and a general search returned a wall of shows that merely mention the words. Much more precise than search_podcasts for a known name, and much worse for a topic. |
| search_episodes_by_personA | Find episodes where a named person is credited as host, guest, producer or any other role. This reads the Podcasting 2.0 person tag, so it finds real credits rather than passing mentions, which makes it the tool for guest research and for tracing where somebody has appeared. Two honest limits: it only finds shows that publish person tags, which is a minority of the index, and it matches the name as written, so a person credited inconsistently appears under more than one spelling. Returns episodes, not shows. |
| search_musicA | Search feeds whose medium is music rather than talk. Podcast Index carries music as a separate medium under the Podcasting 2.0 spec, and those feeds are albums and tracks rather than episodes. Use this for music discovery; a normal podcast search will not surface them well. |
| get_podcastA | Everything Podcast Index knows about one show: metadata, category, episode count, when it last published, and which Podcasting 2.0 features it carries. Takes any identifier you have, a feed id, an RSS URL, a podcast GUID, an Apple Podcasts link or an iTunes id, and works out which it is. Start here when you already know the show; use search_podcasts when you are still looking for it. |
| get_podcasts_batchA | Look up many shows in one request, by podcast GUID. Use this instead of calling get_podcast in a loop whenever you have more than three or four: it is one request rather than one each, which matters against a rate limit and is far faster. Only accepts podcast GUIDs, not feed ids, because that is the only identifier this endpoint takes. |
| get_podcasts_by_mediumA | List feeds of one Podcasting 2.0 medium. The medium says what a feed actually contains, and the index carries far more than talk shows: music, video, film, audiobook, newsletter, blog, course and publisher feeds all live here. Use this to find content types that a normal podcast search buries, such as audiobooks or serialised film. |
| list_categoriesA | Every category Podcast Index uses, with its numeric id. Worth calling once before filtering anything by category, because several tools accept either the name or the id and the names are not the same as Apple's genre list. |
| get_episodesA | Episodes for one show, newest first. Takes any show identifier: feed id, RSS URL, podcast GUID, Apple link or iTunes id. Each episode says which Podcasting 2.0 extras it carries in its 'has' attribute, so you can see at a glance which ones have a transcript or chapters worth fetching. Use 'since' rather than a large 'max' when you only want recent episodes. |
| get_episodeA | One episode in full: description, credited people, soundbites, value block, and the transcript and chapter pointers. Takes a Podcast Index episode id, which is the fastest path, or an episode GUID. A GUID is only unique within a show, so pass the show as well when using one, or the answer is whichever episode the index finds first. |
| get_live_episodesA | Episodes currently marked live across the whole index, from the Podcasting 2.0 liveItem tag. This is a small and fast-moving list: live podcasting is a niche within the index, so a handful of results is normal and an empty one is possible. Each entry carries a start time, an end time and a status. |
| get_random_episodesA | Random episodes from across the index, optionally filtered by language and category. Genuinely random rather than ranked, which makes it useful for sampling what a category actually contains rather than what its top shows look like. Never cached, so calling it again gives different episodes. |
| get_recent_episodesA | The most recently published episodes across every show in the index, newest first. This is the firehose: it is what podcasting published in the last few minutes, not what is popular. Use get_trending for popularity. The exclude filter is worth using, because a handful of high-frequency automated feeds otherwise dominate every result. |
| get_transcriptA | Fetch and read the actual transcript of an episode, as timestamped text with speaker labels where the file has them. This is the tool that turns a podcast into something readable: Podcast Index only publishes a link to the transcript file, and this goes and gets it, works out whether it is SRT, WebVTT, JSON or HTML, and parses it. Long transcripts are returned in windows rather than whole, because a two hour episode is far more text than any single question needs; the response says how much remains and the offset to continue from. If you are looking for one specific moment, use search_transcript instead, which is one call rather than paging. Not every episode has a transcript, and most do not. |
| search_transcriptA | Search inside an episode's transcript and return the moments a phrase was said, each with a timestamp, the speaker where known, and the surrounding conversation. This is the fast path for 'when did they talk about X': one call, no paging, and the timestamp tells you where to skip to in the audio. Matching is literal and case-insensitive rather than semantic, so search for the words that would actually have been spoken and try a couple of phrasings before concluding a topic never came up. An empty result means those words are absent, not that the subject was not discussed. |
| get_chaptersA | Fetch and read the chapter list a publisher attached to an episode: titles, start times, images and links. Chapters are the publisher's own table of contents, so this answers 'what is in this episode and when' far more cheaply than reading the transcript. Chapters the publisher marked as excluded from the table of contents are kept and labelled rather than dropped, because in practice that flag marks sponsor reads and hiding them would make the timeline misrepresent the episode. Like transcripts, chapters are optional and most episodes have none. |
| get_soundbitesA | The clips a publisher marked as the best moments of an episode, with start time and duration. Soundbites are the show's own pick of what is worth quoting, which makes them the cheapest possible answer to 'what is the highlight of this episode' and a ready-made list for promotional clips. Comes straight from the episode record with no extra fetch. Optional and uncommon, like the rest of the Podcasting 2.0 tags. |
| find_transcriptsA | Scan a show's recent episodes and report which of them publish a transcript or chapters, without fetching any of the files. Call this before get_transcript or search_transcript on an unfamiliar show: it is one request, and it tells you whether the show transcribes at all rather than discovering it through a failed lookup per episode. A show that transcribes usually transcribes everything, and a show that does not never will. |
| get_show_profileA | Everything about one show in a single call: metadata, publishing cadence measured from real episode dates, recent episodes, who is credited on them, whether it publishes transcripts or chapters, its payment split, and whether the index is crawling it successfully. Use this instead of calling get_podcast, get_episodes, get_value_block and check_feed_health separately, which is four round trips for the same answer. This is the right first call when the question is about one show. |
| find_guest_appearancesA | Every episode a named person is credited on, grouped by show and ordered newest first, with their role on each. This is guest research: it answers 'who has had this person on', 'what do they usually talk about' and 'which shows book people like this'. Shows where the person appears on many episodes are flagged as likely their own, so a host's back catalogue does not drown out the guest spots you were looking for. Only finds shows that publish Podcasting 2.0 person tags, which is a minority of the index, so an empty result is not evidence the person has never been on a podcast. |
| find_shows_to_pitchA | Search for shows on a topic and keep only the ones worth approaching: alive, publishing recently, with a real episode count and a way to contact them. A plain search returns the whole index including feeds that died in 2019, and sorting that by hand is the tedious part of guest outreach. Each result says when it last published, how often, and what contact route exists. Ranked by recent activity rather than by search relevance, because a perfectly matching show that stopped publishing two years ago is not a lead. |
| get_trendingA | Shows trending in the index right now, which is Podcast Index's own popularity signal rather than a chronological list. This is the tool for 'what is hot in this category'. Filter by category and language to make it useful: unfiltered, it returns whatever is big across all of podcasting, which is rarely the question. The window defaults to the last few days; widen it with 'since' for a slower, more stable read. |
| get_recent_feedsA | Feeds that published something recently, newest activity first. This tracks updates rather than new shows, so an established podcast releasing an episode appears here. Use get_new_feeds for shows that are new to the index. |
| get_new_feedsA | Shows added to Podcast Index for the first time, newest first. This is genuinely new podcasts rather than new episodes, which makes it the tool for spotting a launch. Expect a lot of noise: anyone can submit a feed, so a large share of these are empty, abandoned or automated. |
| get_recent_soundbitesA | The newest soundbites across the whole index: clips publishers themselves marked as the best moment of an episode. A ready-made feed of what podcasters think is worth quoting this week, and a fast way to find shows that use Podcasting 2.0 tags properly. |
| get_value_blockA | The value-for-value block for a show: the wallets that receive listener payments and the weight each one takes. Splits are relative weights rather than percentages, so a computed share is shown alongside the raw number. Most podcasts publish no value block at all, and an absent one is reported plainly rather than as an error. A value block means a show can receive payments; it is not evidence that it has received any. |
| get_episode_valueA | The value block for a single episode, which can differ from the show's. Publishers override the split per episode to pay a guest a share, so this is how you see who was cut in on a particular conversation. Needs both the podcast GUID and the episode GUID, because that is the only pair this endpoint accepts. |
| list_value_podcastsA | Every feed in the index carrying a value block, paged. This is the whole value-for-value corner of podcasting as a list, which is useful for sizing it or for finding shows that have opted into direct listener payment. Use start_at to page: the list is large. |
| get_new_value_feedsA | Feeds that added a value block recently. This is the growth edge of value-for-value podcasting: shows adopting listener payments for the first time, newest first. |
| check_feed_healthA | Diagnose a podcast feed using the crawl history Podcast Index keeps on it: failed fetches, parse errors, the last HTTP status, when it was last successfully read, and whether the index has marked it dead or as a duplicate of another feed. This answers 'is my feed broken' with evidence rather than a guess, and it works on any feed in the index, not only your own. Worth running before blaming a host for a drop in downloads. |
| list_dead_feedsA | Feeds Podcast Index has marked dead, meaning they stopped responding long enough that crawling was abandoned. Each entry can name the feed it duplicates, where the index concluded one feed superseded another. Useful for auditing a list of shows for ones that have quietly stopped, and for understanding churn in the directory. This is a large list. |
| get_index_statsA | How big the index is and how much of it is alive: total feeds, total episodes, how many feeds published in the last 3, 10, 30 and 90 days, and how many carry a value block. The activity numbers are the interesting part, because the gap between total feeds and feeds active in 30 days is the honest measure of how much of podcasting is still running. |
| notify_feed_updateA | Ping Podcast Index to say a feed has changed, so it recrawls sooner than its normal schedule. Use this straight after publishing an episode: the index will find it on its own eventually, and this shortens eventually. Safe to call more than once, and it needs no API key, so it works even on an unconfigured install. It does not add a feed that is not already in the index; use submit_feed for that. |
| submit_feedA | Add a podcast to Podcast Index by its RSS feed URL. This writes to a public global directory that hundreds of podcast apps read, and there is no way to remove a feed through this API afterwards, so it requires confirm: true. If the feed is already indexed you get its existing id back and nothing changes. Needs an API key with write permission, which Podcast Index grants separately from a normal key; without it the call fails with a message saying so and nothing is submitted. |
| submit_feed_by_itunes_idA | Add a podcast to Podcast Index using its iTunes id, for when you have an Apple Podcasts link but not the RSS URL. Same effect and same caveats as submit_feed: it writes to a public directory, it cannot be undone through this API, it requires confirm: true, and it needs a key with write permission. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| episode-deep-read | Actually read an episode: chapters, transcript, and what was said |
| guest-research | Research a podcast guest before booking or pitching |
| pitch-list | Build a list of podcasts worth pitching |
| feed-checkup | Check a podcast feed before it costs you listeners |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| podcastindex-status | |
| podcastindex-concepts |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/navidmoazzez/podcastindex-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server