# OP3 MCP Server (npm · @conorbronsdon/op3-mcp)

OP3 podcast analytics: downloads, geography, app share, episode breakdowns. Read-only.

- Trust score: 78/100 (medium)
- Change this week: +54
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `@conorbronsdon/op3-mcp`: 78/100 (this document), [markdown](https://verifymcp.io/servers/conorbronsdon-op3-mcp/conorbronsdon-op3-mcp.md), [page](https://verifymcp.io/servers/conorbronsdon-op3-mcp/conorbronsdon-op3-mcp)

## Channel facts

- Registry: `npm`
- Package: `@conorbronsdon/op3-mcp`
- Version: `0.2.0`
- Transport: `stdio`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to conorbronsdon/op3-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 25 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 68/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1004 tokens (~167/item across 6 items; 6 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add conorbronsdon-op3-mcp -- npx -y @conorbronsdon/op3-mcp
```

### Codex

```bash
codex mcp add conorbronsdon-op3-mcp -- npx -y @conorbronsdon/op3-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "conorbronsdon-op3-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@conorbronsdon/op3-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add conorbronsdon-op3-mcp --command npx --arg -y --arg @conorbronsdon/op3-mcp
```

### Hermes

```yaml
mcp_servers:
  conorbronsdon-op3-mcp:
    command: "npx"
    args: ["-y", "@conorbronsdon/op3-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "conorbronsdon-op3-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@conorbronsdon/op3-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 78, +57)

- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Provenance: unverified → pass
- [security] The attested source repository moved: conorbronsdon/op3-mcp
- [functional regression] Dependency health: partial → unverified
- [functional improvement] Stability: unverified → 0.23
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] License: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Schema quality: unverified → excellent
- [functional] Licence: MIT
- [functional] Package version: 0.1.0 → 0.2.0

### 2026-08-01 (score 21, +2)

- [security improvement] Malware scan: unverified → pass
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Dependency health: unverified → partial

### 2026-07-31 (score 19, −25)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-28 (score 44, +20)

- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Schema quality: fail
- [functional] First check of Tool coverage: 100
- [functional] First check of Schema quality: unverified
- [functional] First check of Schema quality: fail

### 2026-07-27 (score 24)

First indexed and scored.

## MCP tools (6)

### `op3_get_show` (~174 tokens)

Look up a podcast show on OP3 and get its UUID, title, podcast GUID, and stats page URL. Pass a show UUID, a podcast:guid, or a base64-encoded feed URL. This is the entry point: most other tools need the show UUID this returns. Set include_episodes to also list episodes (id, title, pubdate).

Input parameters:

- `episode_limit` (number): Max episodes to return when include_episodes is true (default 10).
- `identifier` (string, required): Show identifier: an OP3 show UUID (32 hex chars), a podcast:guid, or a base64-encoded feed URL. Use op3_get_show to resolve a feed to its UUID.
- `include_episodes` (boolean): Include the episode list. Off by default to keep the response small.

### `op3_show_downloads` (~77 tokens)

Get a show's recent download summary from OP3: monthly downloads, a week-by-week breakdown, and the average weekly downloads. Use this for 'how many downloads does my show get' questions. Needs a show UUID (from op3_get_show).

Input parameters:

- `show_uuid` (string, required): OP3 show UUID (32 hex chars).

### `op3_episode_downloads` (~128 tokens)

Get per-episode download counts for a show from OP3: for each recent episode, downloads in the first 1/3/7/30 days after publish and all-time. Good for comparing how episodes perform. Needs a show UUID. Use limit to cap how many episodes come back.

Input parameters:

- `limit` (number): Max episodes to return, newest first (default 10).
- `show_uuid` (string, required): OP3 show UUID (32 hex chars).
- `sort_by` (string): Order results: recent (default), all-time downloads, or 7-day downloads.

### `op3_top_apps` (~92 tokens)

Get the top podcast apps and players downloading a show, from OP3, over the last three calendar months. Returns each app with its download count and percent share. Answers 'what apps do my listeners use'. Needs a show UUID.

Input parameters:

- `limit` (number): Max apps to return, ranked by downloads (default 10).
- `show_uuid` (string, required): OP3 show UUID (32 hex chars).

### `op3_top_countries` (~324 tokens)

Get the top listener countries (or regions) for a show. NOTE: OP3 has no native geography query, so this counts raw download records and aggregates by country client-side. It is a representative sample, not an exact lifetime total. OP3 returns raw records oldest-first, so to keep the sample recent this tool defaults to the last `window_days` days (90) when you do not pass an explicit start. Each result has a download count and percent share. Needs a show UUID. Keep max_records modest to stay fast and within rate limits.

Input parameters:

- `by` (string): Aggregate by country code or by region (state/province) name.
- `end` (string): End of the window, ISO date or datetime. Defaults to now.
- `limit` (number): Max countries/regions to return, ranked (default 10).
- `max_records` (number): How many download records to sample for the aggregation (default 5000, cap 20000). Higher is more accurate but slower.
- `show_uuid` (string, required): OP3 show UUID (32 hex chars).
- `start` (string): Start of the window, ISO date or datetime (e.g. 2026-05-01). If omitted, defaults to window_days ago. OP3 records are oldest-first, so without a start the sample would otherwise be the show's oldest…
- `window_days` (number): When start is omitted, sample this many days back from now (default 90). Ignored if start is set.

### `op3_downloads_timeseries` (~209 tokens)

Fetch raw download records for a show from OP3 over a date range. Returns individual download events (time, country, app, device). This is the low-level feed behind the other tools. Use it when you need to filter by episode or a specific date window. Keep limit low (records are verbose). For totals or geography summaries, prefer op3_show_downloads / op3_top_countries.

Input parameters:

- `end` (string): End time, ISO date or datetime.
- `episode_id` (string): Filter to a single episode by its OP3 episodeId.
- `limit` (number): Max records to return (default 20, cap 200). Records are verbose; keep this small.
- `show_uuid` (string, required): OP3 show UUID (32 hex chars).
- `start` (string): Start time, ISO date or datetime (e.g. 2026-06-01 or 2026-06-01T00:00:00Z).

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/conorbronsdon-op3-mcp/conorbronsdon-op3-mcp#diagnostics

## Score history

- 2026-08-03: 78
- 2026-08-02: 78
- 2026-08-01: 21
- 2026-07-31: 19
- 2026-07-30: 44
- 2026-07-28: 44
- 2026-07-27: 24

## Links

- npm package: https://www.npmjs.com/package/@conorbronsdon/op3-mcp
- Socket report: https://socket.dev/npm/package/@conorbronsdon/op3-mcp
- Repository: https://github.com/conorbronsdon/op3-mcp
- Changelog RSS feed: https://verifymcp.io/servers/conorbronsdon-op3-mcp/conorbronsdon-op3-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/conorbronsdon-op3-mcp/conorbronsdon-op3-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/conorbronsdon-op3-mcp/conorbronsdon-op3-mcp
