topic_slug (topic concentration, descendants included), suitability_tier, or min_popularity (global popularity percentile over charting podcasts).
Optional hydrations attach extra data to each result in the same call:
include: ["external_links"]: third-party platform presences (Apple Podcasts, Spotify, YouTube, X, publisher website, etc.) with resolved URLs and audience metrics.include: ["suitability"]: per-category brand-suitability breakdown (12 IAB Tech Lab Brand Safety & Suitability categories with prevalence, treatment, derived risk level, reasoning, and evidence excerpts). The high-levelsuitability_tierenum (SAFE/LIMITED/SENSITIVE/UNSAFE) is rendered on every result without opt-in.include: ["ratings_summary"]: listener-review aggregate (average stars, count, per-platform breakdown). For the full review list useparticle_podcast_get_ratings.include: ["bias"]: full political-bias analysis. The high-levelbiasenum is always rendered without opt-in.include: ["rankings"]: current chart positions across sources/countries/categories. For movers and history useparticle_podcast_get_rankings.recent_episodes: N: inline this many of each result’s most recent episodes (episode_slug,title,published_at,duration_seconds) — skip the follow-upparticle_podcast_list_episodescall when you only need the most recent tail.
Inputs
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | no | — | Free-text search across podcast titles and descriptions (case-insensitive partial match). Omit to fall back to the most recently updated podcasts. |
slug | string | no | — | Exact slug match for a known handle (e.g. "all-in"). |
itunes_id | string | no | — | Numeric Apple Podcasts / iTunes ID (e.g. "1502871393"). Resolves directly to the matching podcast. |
rss_url | string | no | — | Canonical RSS feed URL. Resolves directly to the matching podcast. |
topic_slug | string | no | — | Filter candidates by topic (slug from particle_topic_browse, e.g. "technology/artificial-intelligence"). Matches podcasts where the topic — or any descendant — accounts for a meaningful share of episodes, ranked by concentration. |
suitability_tier | string | no | — | Filter candidates by brand-suitability tier. One of SAFE, LIMITED, SENSITIVE, UNSAFE. Podcasts without a suitability analysis are excluded when set. |
min_popularity | number (0–1] | no | 0 | Restrict candidates to podcasts whose global popularity percentile is at least this value. Popularity is a cume_dist ranking over currently-charting podcasts; non-charting podcasts are excluded when set. Omit or 0 to disable. |
limit | integer (1–25) | no | 5 | Maximum candidates to return. |
include | array of enums | no | [] | Optional non-parameterized hydrations to attach to each result: external_links, suitability, ratings_summary, bias, rankings. The high-level suitability_tier and bias enums are always rendered without opt-in. |
recent_episodes | integer (0–25) | no | 0 | Inline this many of each result’s most recent episodes (episode_slug, title, published_at, duration_seconds). 0 means none. |
Output
A markdown document with## Podcast matches (N) and one ### Title section per podcast. Each section carries bulleted KV rows: - **Slug:**, - **Episodes:**, - **Bias:** (when rated; values: EXTREME_LEFT, LEANS_LEFT, LEFT, CENTER, RIGHT, LEANS_RIGHT, EXTREME_RIGHT), - **Suitability tier:** (when assessed; values: SAFE, LIMITED, SENSITIVE, UNSAFE), - **Language:** (only those with values), then a paragraph description, then a Top speakers: heading followed by up to 8 bullets — each formatted Name (entity_slug) — role.
When include contains suitability and the podcast has been assessed, a Suitability breakdown: block follows with Confidence, Episodes analyzed, Window, the summary paragraph, and one bullet per category above NONE, formatted **code** — prevalence=…, treatment=…, risk=… with the reasoning and cited evidence excerpts. Categories at NONE are omitted (the dedicated REST endpoint GET /v1/podcasts/{id}/suitability returns all 12 unconditionally).
When include contains external_links, an External links: block follows with one bullet per platform, formatted Platform: <url> (or Platform: <identifier> for handle-only platforms like X (Twitter): @hardfork).
When recent_episodes is greater than 0, a Recent episodes: block follows with up to that many bullets per podcast, formatted YYYY-MM-DD · episode-slug — Episode title (~Nm). The episode-slug is the handle accepted by particle_podcast_get_episode.
The ratings_summary, bias, and rankings hydrations are attached to the structured JSON response (via MCP structuredContent); the markdown rendering surfaces the high-level Bias / Suitability tier enums and the suitability/external-link/recent-episode blocks above.
Sample (slug="all-in"):
- **Slug:** is the podcast handle to feed back as podcast_slug to other tools. Each speaker bullet’s parenthesized (entity_slug) (when present) is the knowledge-graph handle for that person — feed it into particle_podcast_find_mentions or particle_podcast_list_episodes to follow them across the catalog.
Example
Related
- REST equivalent:
GET /v1/podcasts. - For sponsor analytics on a single podcast, use
particle_podcast_get_sponsors. - For chart movers and history, use
particle_podcast_get_rankings; for the full review list,particle_podcast_get_ratings.