> ## Documentation Index
> Fetch the complete documentation index at: https://docs.particle.pro/llms.txt
> Use this file to discover all available pages before exploring further.

# particle_podcast_resolve

> Find a podcast by title, slug, iTunes ID, or RSS URL; returns slug, episode count, bias, speakers, and optional hydrations.

Find a podcast by free-text title, exact slug, iTunes ID, or RSS feed URL. Returns slug, title, episode count, bias, and the top recurring speakers (with entity slugs). Use the slug as the agent-facing handle to feed into other podcast tools.

With all identifiers omitted, returns the most popular podcasts (popularity-ranked, not recency) — useful for browsing the catalog when you don't have a name in mind. Narrow free-text browsing with `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](/podcasts/suitability) with prevalence, treatment, derived risk level, reasoning, and evidence excerpts) — premium-grade data, requires a plan with premium endpoints. The high-level `suitability_tier` enum (`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 use [`particle_podcast_get_ratings`](/mcp/tools/podcast_ratings/podcast-get-ratings).
* `include: ["bias"]`: full political-bias analysis. The high-level `bias` enum is always rendered without opt-in.
* `include: ["rankings"]`: current chart positions across sources/countries/categories — premium-grade data, requires a plan with premium endpoints. For movers and history use [`particle_podcast_get_rankings`](/mcp/tools/podcast_rankings/podcast-get-rankings).
* `include: ["format"]`: the show's [format profile](/podcasts/format) — how often episodes feature guests, detected production formats (`interview`, `panel`, `call_in`, `solo_narrated`), ad and video presence, episode-length distribution, publishing cadence, and the publish-day pattern.
* `recent_episodes: N`: inline this many of each result's most recent episodes (`episode_slug`, `title`, `published_at`, `duration_seconds`) — skip the follow-up `particle_podcast_list_episodes` call 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`, `format`. 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`](/podcasts/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 the platform reports attributes (audience size, content tallies, verified status, ...) they are appended after an em dash, joined with `·` and formatted `name: value` — so a YouTube channel renders as `YouTube: <url> — subscribers: 245,000 · videos: 1,200`. Integer counts carry thousand separators.

When `include` contains `format` and the podcast's episodes have been analyzed, a `Format:` block follows with `Guest frequency` (bucket plus the exact share of analyzed episodes), `Signals`, `Ads`, `Video`, `Episode length` (average with p25/median/p75), `Cadence` (episodes per week), `Publishing` (active/dormant with the latest episode date), `Publish days` (per-weekday episode counts), and `Analyzed episodes` (the sample behind the attributes). Fields the catalog can't yet assert for the show are omitted rather than guessed.

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`](/mcp/tools/podcasts/podcast-get-episode).

The `ratings_summary`, `bias`, and `rankings` hydrations are carried in full on the JSON form of the response (pass `output_format: "json"` to receive it); the markdown rendering surfaces the high-level `Bias` / `Suitability tier` enums and the suitability/format/external-link/recent-episode blocks above.

Sample (`slug="all-in"`):

```markdown theme={"dark"}
## Podcast matches (1)

### All-In with Chamath, Jason, Sacks & Friedberg

- **Slug:** all-in
- **Episodes:** 201
- **Bias:** LEANS_RIGHT
- **Language:** en

Industry veterans, degenerate gamblers & besties Chamath Palihapitiya, Jason Calacanis, David Sacks & David Friedberg cover all things economic, tech, political, social & poker.

Top speakers:
- Jason Calacanis (jason-calacanis) — HOST
- Chamath Palihapitiya (chamath-palihapitiya) — HOST
- David Friedberg (david-friedberg) — HOST
- David O. Sacks (david-o-sacks) — HOST
```

The string after `- **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`](/mcp/tools/podcasts/podcast-find-mentions) or [`particle_podcast_list_episodes`](/mcp/tools/podcasts/podcast-list-episodes) to follow them across the catalog.

## Example

```text theme={"dark"}
Agent calls: particle_podcast_resolve { "query": "all in" }
            → reads "- **Slug:**" row → "all-in"

Agent calls: particle_podcast_get_sponsors { "podcast_slug": "all-in" }
```

Pulling subscription URLs and current chart positions for a known podcast in one call:

```text theme={"dark"}
Agent calls: particle_podcast_resolve {
  "slug": "all-in",
  "include": ["external_links", "rankings"]
}
```

Looking up a podcast by its Apple feed:

```text theme={"dark"}
Agent calls: particle_podcast_resolve { "itunes_id": "1502871393" }
```

## Related

* REST equivalent: [`GET /v1/podcasts`](/podcasts/overview).
* For sponsor analytics on a single podcast, use [`particle_podcast_get_sponsors`](/mcp/tools/podcast_advertising/podcast-get-sponsors).
* For chart movers and history, use [`particle_podcast_get_rankings`](/mcp/tools/podcast_rankings/podcast-get-rankings); for the full review list, [`particle_podcast_get_ratings`](/mcp/tools/podcast_ratings/podcast-get-ratings).
