Pod Researcher
NPM · @PIPEWORX/MCP-POD-RESEARCHER · 2 COMPONENTS
pod-researcher — podcast prospecting for guest booking and sponsorship.
Available components
Last scanned (2 hours ago)
Scores higher than 72% of npm servers
Category Marketing and SEO
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to pipeworx-io/mcp-pod-researcher). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 1 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability64
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 1813 tokens (~226/item across 8 items; 8 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management23
- Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 8 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 9 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 +1
- Security disclosure: fail → unverified ▼ functional
- Package version: 0.2.0 → 0.2.1 functional
- 2 Nov 26 +1
- Security disclosure: unverified → fail ▼ functional
- 1 Nov 26 0
- Security disclosure: fail → unverified ▼ functional
- 31 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 30 Oct 26 0
- Security disclosure: unverified → fail ▼ functional
- 29 Oct 26 79
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed npm/@pipeworx/mcp-pod-researcher@0.2.1
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | pipeworx-io/mcp-pod-researcher |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/pipeworx-io/mcp-pod-researcher/.github/workflows/publish.yml@refs/heads/main |
| Rekor log index | 3685303825 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:d0a7ccb61bec47096781372afcff45baf5c55d2f78c7784cbecbfa5cf5b5f4bcca71c4d912dc576ba1c682797d431825744768e4215532899e3ffac2c |
Background: How many MCP packages publish verified provenance →
Dependencies 0 packages
| Packages resolved | 0 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
find_podcast_contacts ~471
Find ACTIVE podcasts whose recent episodes cover a topic, each with the best published contact route for booking a guest or buying sponsorship. Searches episode titles and show notes across ~740k podcasts that published in the last year (from the Podcast Index open directory plus each show's own RSS feed and website). Every result carries the episodes that prove the fit, the show's activity status, and either best_route (with holder_type person / role / hosting_account_owner, its source_url and last_observed date) or route_status "none_found" with what was checked. Routes designated for your purpose rank first; a general contact or a person's published address is a labelled fallback. For a signed-in account, shows and people you recorded as contacted, declined, booked or do_not_contact are left out. Use get_podcast_profile for one show in full.
| Name | Type | Req | Description |
|---|---|---|---|
| active_only | boolean | – | Default true: only shows classified active (publishing on their usual cadence). false also returns overdue, hiatus and dormant shows, labelled. |
| country | string | – | Two-letter country code of the show, when known, e.g. "us". |
| cursor | string | – | cursor_next from a previous call, for the next page. |
| include_engaged | boolean | – | Signed-in accounts: default false leaves out shows you already recorded as contacted, replied or booked. true returns them, marked with your last outcome. Declined and do_not_contact are always left… |
| language | string | – | Feed language code, e.g. "en" (matches en, en-us, en-gb). |
| limit | integer | – | Shows per page, 1-50 (default 20). |
| purpose | string | yes | What you want from the show: 'guest' (book someone onto it) or 'sponsor' (advertise on it). Routes designated for this purpose rank first. |
| require_route | boolean | – | true = only shows that have a contact route for this purpose (designated, or a general/person fallback). Default false: shows with no route found are returned too, ranked by fit, with route_status "n… |
| topic | string | yes | What the show should be about, in plain words, e.g. "AI agents developer infrastructure" or "marathon training". |
No output schema declared.
No examples provided.
get_podcast_profile ~135
One podcast in full: identity (title, feed URL, website, podcast:guid, Apple id), activity status and feed health, the latest episodes, and EVERY published contact route with holder_type (person / role / hosting_account_owner), purpose, source_url and last_observed. Accepts a show_id, an RSS feed URL (old URLs of moved feeds resolve) or a podcast:guid. For a signed-in account, also returns your outreach history with the show.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The show: a show_id from find_podcast_contacts, the RSS feed URL, or its podcast:guid. |
No output schema declared.
No examples provided.
get_podcast_topic_changes ~84
Signed-in accounts: for your topic watches (or one, by watch_id), the podcasts that match now and did not at the last check, with their best contact route. Each call moves the baseline forward, so a show is reported once.
| Name | Type | Req | Description |
|---|---|---|---|
| watch_id | integer | – | One watch from watch_podcast_topic. Omit for all of your active watches. |
No output schema declared.
No examples provided.
list_podcast_transcripts ~234
Which episodes of a podcast have a publisher-provided transcript, and where: reads the show's own RSS feed live and lists every episode's Podcasting 2.0 <podcast:transcript> links with their format (SRT, WebVTT, JSON, text, HTML), language and URL. Episodes without one are kept in the list and labelled transcript_status "no_publisher_transcript", and a show that publishes none says so plainly with its episode list intact. Pass a show_id or podcast:guid from find_podcast_contacts, or the RSS feed URL directly. Use search_podcast_transcript to pull timestamped passages from one.
| Name | Type | Req | Description |
|---|---|---|---|
| episode | string | – | Narrow to one episode: its guid, page or audio URL, episode number ("273" or "#273"), or words from its title. Omit for the latest episodes. |
| id | string | yes | The show: a show_id from find_podcast_contacts, the RSS feed URL, or its podcast:guid. |
| limit | integer | – | Episodes to return, newest first, 1-100 (default 25). |
No output schema declared.
No examples provided.
record_podcast_outreach ~240
Signed-in accounts: record what happened when you reached out to a podcast, so find_podcast_contacts stops suggesting it. outcome: contacted, replied, declined, booked, bounced, do_not_contact or clear (clear lifts an earlier do_not_contact). Name the show by show_id. For a PERSON-level record (e.g. the host asked never to be contacted about any of their shows), pass scope 'person' and the contact_id of their email route from get_podcast_profile: every show that publishes that address is then left out of your searches. Never pass an email address: a call carrying one is refused and nothing is recorded. History is private to your account.
| Name | Type | Req | Description |
|---|---|---|---|
| contact_id | integer | – | The route you used, from best_route.contact_id or get_podcast_profile routes. Required when scope is person. |
| outcome | string | yes | What happened. |
| scope | string | – | 'show' (default) records against the show; 'person' records against the person behind an email route (needs contact_id). |
| show_id | integer | yes | The show, from find_podcast_contacts or get_podcast_profile. |
No output schema declared.
No examples provided.
refresh_podcast ~103
Ask for one podcast's RSS feed to be read again now rather than at its next scheduled check. Returns the show's current state and when the refresh was queued; new episodes show up in get_podcast_profile once the feed has been read (normally within minutes). Contact routes are re-checked separately, not by this call.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | The show: a show_id from find_podcast_contacts, the RSS feed URL, or its podcast:guid. |
No output schema declared.
No examples provided.
search_podcast_transcript ~314
What a podcast episode actually said about a topic, with timestamps: fetches the episode's publisher-provided transcript (Podcasting 2.0 <podcast:transcript>, as SRT, WebVTT, JSON, plain text or HTML) and returns the passages that match a query, each with start and end time, the speakers when the file names them, and the matched words. Defaults to the newest episode that has a transcript; name one by guid, URL, episode number or title words. A plain-text transcript without timing is returned as text passages with a note. An episode with no publisher transcript is reported as such with the episodes that do have one.
| Name | Type | Req | Description |
|---|---|---|---|
| episode | string | – | Which episode: guid, page or audio URL, episode number ("273"), or words from its title. Default: the newest episode with a transcript. |
| format | string | – | Preferred transcript format when the episode offers several. Default: JSON, then WebVTT, then SRT, then text. |
| id | string | yes | The show: a show_id from find_podcast_contacts, the RSS feed URL, or its podcast:guid. |
| limit | integer | – | Passages to return, 1-50 (default 10). |
| query | string | yes | Words to find in the transcript, e.g. "advertising revenue" or "value for value". |
| window_seconds | integer | – | How much transcript each passage spans, 10-180 seconds (default 30). |
No output schema declared.
No examples provided.
watch_podcast_topic ~175
Signed-in accounts: save a topic x purpose search so get_podcast_topic_changes can report podcasts that newly match it. Records the current matches as the baseline, so get_podcast_topic_changes returns only shows that appear after now. Returns the watch_id.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | Two-letter country code, e.g. "us". |
| language | string | – | Feed language code, e.g. "en". |
| purpose | string | yes | What you want from the show: 'guest' (book someone onto it) or 'sponsor' (advertise on it). Routes designated for this purpose rank first. |
| require_route | boolean | – | Only report shows that have a contact route for this purpose. Default false. |
| topic | string | yes | The topic to watch, as for find_podcast_contacts. |
No output schema declared.
No examples provided.
How do I install the Pod Researcher MCP server?
Pod Researcher runs locally as an npm package, launched with npx -y @pipeworx/mcp-pod-researcher. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · @pipeworx/mcp-pod-researcher
claude mcp add pipeworx-io-pod-researcher -- npx -y @pipeworx/mcp-pod-researcher
What is the Pod Researcher MCP server?
Pod Researcher is an MCP server listed in the public MCP registry as io.github.pipeworx-io/pod-researcher. pod-researcher, podcast prospecting for guest booking and sponsorship. This page covers its npm package (@pipeworx/mcp-pod-researcher).
Is the Pod Researcher MCP server safe to use?
Pod Researcher scores 82 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Pod Researcher MCP server expose?
Pod Researcher exposes 8 tools: find_podcast_contacts, get_podcast_profile, refresh_podcast, watch_podcast_topic, get_podcast_topic_changes, and 3 more. Their descriptions and schemas cost roughly 1,756 tokens of context every time the server is loaded.
Is the Pod Researcher MCP server still maintained?
Pod Researcher is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Pod Researcher MCP server under?
Pod Researcher declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.