# LLMExpert: cited Q&A over YouTube videos (remote · llmexpert.io)

Ask cited questions across sets of YouTube videos, and get their transcripts. API key or x402 USDC.

- Trust score: 67/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-24

## Components

- remote · `llmexpert.io`: 67/100 (this document), [markdown](https://verifymcp.io/servers/io-llmexpert-transcription/llmexpert.md), [page](https://verifymcp.io/servers/io-llmexpert-transcription/llmexpert)

## Channel facts

- Endpoint: `https://llmexpert.io/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.2.3`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, 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-10-24.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 4 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 61/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3383 tokens (~241/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 17/100
  - Stability observed for 5 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.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 14 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the LLMExpert: cited Q&A over YouTube videos MCP server?

LLMExpert: cited Q&A over YouTube videos is a hosted endpoint at https://llmexpert.io/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http io-llmexpert-transcription 'https://llmexpert.io/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "io-llmexpert-transcription": {
      "url": "https://llmexpert.io/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "io-llmexpert-transcription": {
      "type": "http",
      "url": "https://llmexpert.io/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.io-llmexpert-transcription]
url = "https://llmexpert.io/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "io-llmexpert-transcription": {
      "type": "remote",
      "url": "https://llmexpert.io/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add io-llmexpert-transcription --url 'https://llmexpert.io/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  io-llmexpert-transcription:
    url: "https://llmexpert.io/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "io-llmexpert-transcription": {
      "Transport": "http",
      "Url": "https://llmexpert.io/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add io-llmexpert-transcription -t streamable-http -u 'https://llmexpert.io/mcp'
```

### Other

```json
{
  "mcpServers": {
    "io-llmexpert-transcription": {
      "type": "http",
      "url": "https://llmexpert.io/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## 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-10-24 (score 67, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional regression] Schema quality: 2949 → 3383
- [functional] Schema quality: good → excellent
- [functional] Server version: 0.2.4 → 0.3.0
- [functional] New tool “search_talks”

### 2026-10-23 (score 66, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “add_source” rewrote its description, which is the text the model reads
- [functional] Server version: 0.2.3 → 0.2.4

### 2026-10-22 (score 66, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “get_usage” rewrote its description, which is the text the model reads
- [security] Tool “add_sources” rewrote its description, which is the text the model reads
- [security] Tool “query_channel” rewrote its description, which is the text the model reads
- [security] Tool “query_collection” rewrote its description, which is the text the model reads
- [security] Tool “quote” rewrote its description, which is the text the model reads
- [security] Tool “transcribe” rewrote its description, which is the text the model reads
- [functional] Schema quality: good → excellent
- [functional] Server version: 0.2.2 → 0.2.3
- [functional] Server version: 0.2.0 → 0.2.2
- [cosmetic] “add_sources” added an optional parameter “exclude_shorts”
- [cosmetic] “add_sources” added an optional parameter “min_duration_seconds”
- [cosmetic] “quote” added an optional parameter “exclude_shorts”
- [cosmetic] “quote” added an optional parameter “min_duration_seconds”
- [cosmetic] “transcribe” added an optional parameter “exclude_shorts”
- [cosmetic] “transcribe” added an optional parameter “min_duration_seconds”
- [cosmetic] “add_sources” reworded the description of “max_videos_per_channel”
- [cosmetic] “quote” reworded the description of “max_videos_per_channel”
- [cosmetic] “transcribe” reworded the description of “max_videos_per_channel”

### 2026-10-21 (score 66, +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.

### 2026-10-20 (score 65, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-19 (score 65)

First indexed and scored.

## MCP tools (14)

### `query_channel` (~171 tokens)

Query a channel

Run a retrieval-augmented query against a channel's indexed knowledge base and return a generated answer with citations. Maps to POST /v1/query. Requires the key's `query` scope and access to the channel. Charged: $0.02 flat per call by default. Prices are the service defaults; `quote` returns the exact price.

Input parameters:

- `channel_id` (string, required): Channel to query. The key must be scoped to it.
- `idempotency_key` (string): Idempotency-Key for safe retries.
- `query` (string, required): The natural-language question.
- `session_id` (string): Optional session for multi-turn continuity.
- `source_types` (array): Restrict retrieval to these source types.
- `top_k` (integer): Chunks to retrieve (default 5).

### `list_channels` (~69 tokens)

List channels

List the channels the calling key is scoped to. Maps to GET /v1/channels. Cursor-paginated. Requires the key's `read` scope.

Input parameters:

- `cursor` (string): Opaque pagination cursor from a prior response.
- `limit` (integer): Max items (default 25).

### `list_sources` (~115 tokens)

List sources in a channel

List the sources (video/document/website) in a channel, optionally filtered by type or status. Maps to GET /v1/channels/{channelId}/sources. Cursor-paginated. Requires the key's `read` scope.

Input parameters:

- `channel_id` (string, required): Channel whose sources to list.
- `cursor` (string): Opaque pagination cursor.
- `limit` (integer): Max items (default 25).
- `status` (string): Filter by processing status.
- `type` (string): Filter by source type.

### `get_source` (~64 tokens)

Get a source

Fetch a single source and its processing status (type-specific provenance included). Maps to GET /v1/sources/{sourceId}. Requires the key's `read` scope.

Input parameters:

- `source_id` (string, required): Source identifier, e.g. src_71b0e4.

### `add_source` (~163 tokens)

Add a source to a channel

Add a source to a channel and begin background ingestion. Maps to POST /v1/channels/{channelId}/sources. Only `type: video` is processed today; `document` and `website` are reserved and return a 501 error until released. Charged from the key owner's prepaid balance at the ingest rate: $0.01/min standard, $0.03/min whisper by default, 1-minute minimum per video. A short balance returns a 402 error. Requires the key's `write` scope.

Input parameters:

- `channel_id` (string, required): Channel to add the source to.
- `idempotency_key` (string): Idempotency-Key for safe retries.
- `source` (required): The source to add (discriminated on `type`).

### `get_usage` (~74 tokens)

Get usage and spend

Get usage and spend in dollars for the calling key: the account balance (wallet_usd), this period's spend (consumed_usd), query count, and budget remaining. Maps to GET /v1/usage. Requires the key's `read` scope.

Input parameters:

- `period` (string): Billing period (default current).

### `quote` (~369 tokens)

Quote an ingest

Free. Expand YouTube URLs exactly as an ingest would and return the price, the per-video lines and the per-source rejections. Maps to POST /v1/quote. $0.01/min standard, $0.03/min whisper by default, 1-minute minimum per video. The `quote_id` is valid for 15 minutes; pass it to `transcribe` or `add_sources` to be charged exactly this price. Pass `collection_id` to price against an existing collection (videos already in it are free). At least one of url, urls, channel_url, channel_urls. Requires the key's `read` scope. Prices are the service defaults; `quote` returns the exact price.

Input parameters:

- `channel_url` (string): `https://www.youtube.com/@handle`, `/channel/UC…`, or a playlist URL.
- `channel_urls` (array): Several channel or playlist URLs.
- `collection_id` (string): Price against this collection (videos already in it are free).
- `exclude_shorts` (boolean): Skip videos of 3 minutes or less when expanding a channel or playlist (default true); explicit video URLs are never skipped.
- `language` (string): Optional BCP-47 hint for transcription, e.g. en.
- `max_videos_per_channel` (integer): Newest-first cap on eligible videos per channel or playlist (default 25); Shorts and videos below min_duration_seconds are skipped before the cap.
- `min_duration_seconds` (integer): Skip expanded videos shorter than this many seconds.
- `quality` (string): Transcription quality (default standard).
- `url` (string): One YouTube URL (video, @handle, /channel/UC…, or playlist).
- `urls` (array): Several YouTube URLs.

### `transcribe` (~554 tokens)

Transcribe into a new collection

Charged. Create a collection and start an ingest job for the given YouTube URLs in one call. Maps to POST /v1/transcribe. $0.01/min standard, $0.03/min whisper by default, 1-minute minimum per video. Pass a `quote_id` from `quote` to be charged exactly that price. Returns `job_id`, `collection_id` and `collection_token` (`ct_…`, shown once: store it; it reads this collection without an API key). Poll `get_status` every 10–30 s until `status` is completed, partial or failed; `completed` means every accepted video is transcribed and indexed, so the collection is queryable. With an API key it needs the key's `write` scope. Without an API key this tool is payable in USDC via x402: the first call returns a payment-required result (`isError` with the payment requirements in `structuredContent`); an x402-aware MCP client signs and retries the same call with `_meta['x402/payment']`, and the receipt returns in the result's `_meta['x402/payment-response']`. Never pay again after a 409 (already presented) or 502 (settlement unknown) result. Keyless `transcribe` takes one channel-like source and at most 3 videos. Prices are the service defaults; `quote` returns the exact price.

Input parameters:

- `channel_url` (string): `https://www.youtube.com/@handle`, `/channel/UC…`, or a playlist URL.
- `channel_urls` (array): Several channel or playlist URLs.
- `exclude_shorts` (boolean): Skip videos of 3 minutes or less when expanding a channel or playlist (default true); explicit video URLs are never skipped.
- `idempotency_key` (string): Idempotency-Key for safe retries.
- `language` (string): Optional BCP-47 hint for transcription, e.g. en.
- `max_videos_per_channel` (integer): Newest-first cap on eligible videos per channel or playlist (default 25); Shorts and videos below min_duration_seconds are skipped before the cap.
- `min_duration_seconds` (integer): Skip expanded videos shorter than this many seconds.
- `quality` (string): Transcription quality (default standard).
- `quote_id` (string): A `quote_id` from `quote`: charges exactly the quoted price (400 if unknown or expired).
- `title` (string): Title for the new collection (default: generated).
- `url` (string): One YouTube URL (video, @handle, /channel/UC…, or playlist).
- `urls` (array): Several YouTube URLs.

### `create_collection` (~116 tokens)

Create an empty collection

Free. Create an empty collection to add sources to later with `add_sources`. Maps to POST /v1/collections. Returns the collection and its `collection_token` (`ct_…`, shown once: store it; absent on an idempotent replay). API key required (the key's `write` scope). Prices are the service defaults; `quote` returns the exact price.

Input parameters:

- `idempotency_key` (string): Idempotency-Key for safe retries.
- `title` (string, required): Display name for the collection.

### `add_sources` (~423 tokens)

Add YouTube sources to a collection

Charged like `transcribe`. Expand the given YouTube URLs, charge for the new work and start an ingest job in an existing collection. Maps to POST /v1/collections/{collectionId}/sources. $0.01/min standard, $0.03/min whisper by default, 1-minute minimum per video. Videos already in the collection are free. Pass a `quote_id` from `quote` to be charged exactly that price. Poll `get_status` every 10–30 s until `status` is completed, partial or failed; `completed` means every accepted video is transcribed and indexed, so the collection is queryable. API key required (the key's `write` scope). Prices are the service defaults; `quote` returns the exact price.

Input parameters:

- `channel_url` (string): `https://www.youtube.com/@handle`, `/channel/UC…`, or a playlist URL.
- `channel_urls` (array): Several channel or playlist URLs.
- `collection_id` (string, required): Collection to add the sources to.
- `exclude_shorts` (boolean): Skip videos of 3 minutes or less when expanding a channel or playlist (default true); explicit video URLs are never skipped.
- `idempotency_key` (string): Idempotency-Key for safe retries.
- `language` (string): Optional BCP-47 hint for transcription, e.g. en.
- `max_videos_per_channel` (integer): Newest-first cap on eligible videos per channel or playlist (default 25); Shorts and videos below min_duration_seconds are skipped before the cap.
- `min_duration_seconds` (integer): Skip expanded videos shorter than this many seconds.
- `quality` (string): Transcription quality (default standard).
- `quote_id` (string): A `quote_id` from `quote`: charges exactly the quoted price (400 if unknown or expired).
- `url` (string): One YouTube URL (video, @handle, /channel/UC…, or playlist).
- `urls` (array): Several YouTube URLs.

### `get_status` (~159 tokens)

Get an ingest job

Free. Get an ingest job started by `transcribe` or `add_sources`. Maps to GET /v1/jobs/{jobId}. Poll every 10–30 s until `status` is completed, partial or failed (terminal). `completed` means every accepted video is transcribed and indexed, so the collection is queryable; `partial` means some videos failed and were credited back (`credited_usd`); `videos.completed` / `videos.failed` count progress. Works with an API key or the collection's `ct_` token as the bearer. Prices are the service defaults; `quote` returns the exact price.

Input parameters:

- `job_id` (string, required): The `job_id` from `transcribe` or `add_sources`.

### `get_transcript` (~199 tokens)

Get a video's transcript

Free. Get the transcript of a video that is completed in one of your collections. Maps to GET /v1/videos/{youtubeId}/transcript. `collection_id` is required with an API key; with the collection's `ct_` token as the bearer it defaults to the token's collection. `format` is json (segments with timestamps, default) or text (one `[H:MM:SS] text` line per segment). 404 when the video is not completed in that collection, or the transcript predates the transcript cache. Prices are the service defaults; `quote` returns the exact price.

Input parameters:

- `collection_id` (string): Collection the video is completed in (required with an API key).
- `format` (string): json (default) or text.
- `youtube_id` (string, required): The 11-character YouTube video id, e.g. dQw4w9WgXcQ.

### `query_collection` (~256 tokens)

Query a collection

Charged: $0.02 flat per call by default, no token multiplier. Ask a question of a collection and get a generated answer with citations. Maps to POST /v1/collections/{collectionId}/query. Query a collection once `get_status` says completed. With an API key it needs the key's `query` scope. Without an API key this tool is payable in USDC via x402: the first call returns a payment-required result (`isError` with the payment requirements in `structuredContent`); an x402-aware MCP client signs and retries the same call with `_meta['x402/payment']`, and the receipt returns in the result's `_meta['x402/payment-response']`. Never pay again after a 409 (already presented) or 502 (settlement unknown) result. Keyless, only the address that paid for the collection may query it. Prices are the service defaults; `quote` returns the exact price.

Input parameters:

- `collection_id` (string, required): Collection to query.
- `idempotency_key` (string): Idempotency-Key for safe retries.
- `query` (string, required): The natural-language question.
- `session_id` (string): Optional session for multi-turn continuity.

### `search_talks` (~422 tokens)

Search 2026 conference talks

Ask a question across about 490 curated 2026 conference talks and get a generated answer whose citations give each talk's video URL (with t=) and start_seconds, plus its conference, year and speakers. Optional filters: conference (one of ai-engineer-worlds-fair, ai-engineer-europe, kubecon-eu, google-cloud-next, microsoft-build, pycon-us, google-io, code-with-claude, openai-devday), year, and speaker (part of a name, case-insensitive; speakers are known for about half the talks, so a speaker filter misses the rest). A filter that matches no talk answers `answer: null` and costs nothing. Maps to POST /v1/search/talks. Charged: $0.02 flat per call by default, or free within the daily free allowance. With an API key it needs the key's `query` scope. Without an API key this tool is payable in USDC via x402: the first call returns a payment-required result (`isError` with the payment requirements in `structuredContent`); an x402-aware MCP client signs and retries the same call with `_meta['x402/payment']`, and the receipt returns in the result's `_meta['x402/payment-response']`. Never pay again after a 409 (already presented) or 502 (settlement unknown) result. Prices are the service defaults; `quote` returns the exact price.

Input parameters:

- `conference` (string): Conference slug: ai-engineer-worlds-fair, ai-engineer-europe, kubecon-eu, google-cloud-next, microsoft-build, pycon-us, google-io, code-with-claude, openai-devday.
- `idempotency_key` (string): Idempotency-Key for safe retries.
- `question` (string, required): The natural-language question.
- `speaker` (string): Part of a speaker name, case-insensitive.
- `year` (integer): Conference year, e.g. 2026.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/io-llmexpert-transcription/llmexpert#diagnostics

## Score history

- 2026-10-24: 67
- 2026-10-23: 66
- 2026-10-22: 66
- 2026-10-21: 66
- 2026-10-20: 65
- 2026-10-19: 65

## Common questions

### What is the LLMExpert: cited Q&A over YouTube videos MCP server?

LLMExpert: cited Q&A over YouTube videos is an MCP server listed in the public MCP registry as io.llmexpert/transcription. Ask cited questions across sets of YouTube videos, and get their transcripts. API key or x402 USDC. This page covers its hosted endpoint (https://llmexpert.io/mcp).

### Is the LLMExpert: cited Q&A over YouTube videos MCP server safe to use?

LLMExpert: cited Q&A over YouTube videos scores 67 out of 100 on VerifyMCP. 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 LLMExpert: cited Q&A over YouTube videos MCP server expose?

LLMExpert: cited Q&A over YouTube videos exposes 14 tools: query_channel, list_channels, list_sources, get_source, add_source, and 9 more. Their descriptions and schemas cost roughly 3,154 tokens of context every time the server is loaded.

### Does the LLMExpert: cited Q&A over YouTube videos MCP server require authentication?

No. We connected to LLMExpert: cited Q&A over YouTube videos without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the LLMExpert: cited Q&A over YouTube videos MCP server still maintained?

LLMExpert: cited Q&A over YouTube videos is still listed as active in the MCP registry. We last reached this channel on 24 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://llmexpert.io/mcp
- Website: https://llmexpert.io/
- Changelog RSS feed: https://verifymcp.io/servers/io-llmexpert-transcription/llmexpert.xml
- Changelog JSON feed: https://verifymcp.io/servers/io-llmexpert-transcription/llmexpert.json
- HTML version of this page: https://verifymcp.io/servers/io-llmexpert-transcription/llmexpert
