LLMExpert transcription

YouTube transcription and collection Q&A over MCP; pay with an API key or x402 USDC.

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
96%
命名品質
97%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~3,831Token(工具定義)
~1.9 KB典型回應大小
顯著的注意力影響(128k 上下文的 2.99%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

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

遠端端點

https://llmexpert.io/mcpstreamable-http

它能做什麼

工具清單

工具(13)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢query_channel(channel_id, query, session_id, top_k, source_types, ...)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "channel_id": {
      "type": "string",
      "description": "Channel to query. The key must be scoped to it."
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4000,
      "description": "The natural-language question."
    },
    "session_id": {
      "type": "string",
      "description": "Optional session for multi-turn continuity."
    },
    "top_k": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "description": "Chunks to retrieve (default 5)."
    },
    "source_types": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "video",
          "document",
          "website"
        ]
      },
      "description": "Restrict retrieval to these source types."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 255,
      "description": "Idempotency-Key for safe retries."
    }
  },
  "required": [
    "channel_id",
    "query"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_channels(limit, cursor)

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

輸入結構描述

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Max items (default 25)."
    },
    "cursor": {
      "type": "string",
      "description": "Opaque pagination cursor from a prior response."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_sources(channel_id, limit, cursor, type, status)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "channel_id": {
      "type": "string",
      "description": "Channel whose sources to list."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "Max items (default 25)."
    },
    "cursor": {
      "type": "string",
      "description": "Opaque pagination cursor."
    },
    "type": {
      "type": "string",
      "enum": [
        "video",
        "document",
        "website"
      ],
      "description": "Filter by source type."
    },
    "status": {
      "type": "string",
      "enum": [
        "queued",
        "ingesting",
        "indexing",
        "ready",
        "error"
      ],
      "description": "Filter by processing status."
    }
  },
  "required": [
    "channel_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_source(source_id)

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

輸入結構描述

{
  "type": "object",
  "properties": {
    "source_id": {
      "type": "string",
      "description": "Source identifier, e.g. src_71b0e4."
    }
  },
  "required": [
    "source_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡add_source(channel_id, source, idempotency_key)

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. Requires the key's `write` scope.

輸入結構描述

{
  "type": "object",
  "properties": {
    "channel_id": {
      "type": "string",
      "description": "Channel to add the source to."
    },
    "source": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "video"
            },
            "youtube_video_id": {
              "type": "string",
              "description": "YouTube video id, e.g. dQw4w9WgXcQ."
            }
          },
          "required": [
            "type",
            "youtube_video_id"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "document"
            },
            "file_id": {
              "type": "string",
              "description": "Id from a prior upload."
            },
            "url": {
              "type": "string",
              "format": "uri",
              "description": "Public document URL."
            },
            "mime_type": {
              "type": "string",
              "description": "e.g. application/pdf."
            }
          },
          "required": [
            "type"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "website"
            },
            "url": {
              "type": "string",
              "format": "uri",
              "description": "URL to crawl."
            },
            "crawl_depth": {
              "type": "integer",
              "minimum": 0,
              "maximum": 5,
              "description": "Crawl depth (default 1)."
            }
          },
          "required": [
            "type",
            "url"
          ],
          "additionalProperties": false
        }
      ],
      "description": "The source to add (discriminated on `type`)."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 255,
      "description": "Idempotency-Key for safe retries."
    }
  },
  "required": [
    "channel_id",
    "source"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_usage(period)

Get usage, quota, and spend for the calling key (queries, tokens, cost, budget remaining). Maps to GET /v1/usage. Requires the key's `read` scope.

輸入結構描述

{
  "type": "object",
  "properties": {
    "period": {
      "type": "string",
      "enum": [
        "current",
        "previous"
      ],
      "description": "Billing period (default current)."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢quote(url, urls, channel_url, channel_urls, max_videos_per_channel, ...)

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.10/min standard, $0.25/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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "One YouTube URL (video, @handle, /channel/UC…, or playlist)."
    },
    "urls": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri"
      },
      "description": "Several YouTube URLs."
    },
    "channel_url": {
      "type": "string",
      "description": "`https://www.youtube.com/@handle`, `/channel/UC…`, or a playlist URL."
    },
    "channel_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Several channel or playlist URLs."
    },
    "max_videos_per_channel": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "description": "Newest-first cap applied to each channel or playlist (default 25)."
    },
    "quality": {
      "type": "string",
      "enum": [
        "standard",
        "whisper"
      ],
      "description": "Transcription quality (default standard)."
    },
    "language": {
      "type": "string",
      "description": "Optional BCP-47 hint for transcription, e.g. en."
    },
    "collection_id": {
      "type": "string",
      "description": "Price against this collection (videos already in it are free)."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡transcribe(url, urls, channel_url, channel_urls, max_videos_per_channel, ...)

Charged. Create a collection and start an ingest job for the given YouTube URLs in one call. Maps to POST /v1/transcribe. $0.10/min standard, $0.25/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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "One YouTube URL (video, @handle, /channel/UC…, or playlist)."
    },
    "urls": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri"
      },
      "description": "Several YouTube URLs."
    },
    "channel_url": {
      "type": "string",
      "description": "`https://www.youtube.com/@handle`, `/channel/UC…`, or a playlist URL."
    },
    "channel_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Several channel or playlist URLs."
    },
    "max_videos_per_channel": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "description": "Newest-first cap applied to each channel or playlist (default 25)."
    },
    "quality": {
      "type": "string",
      "enum": [
        "standard",
        "whisper"
      ],
      "description": "Transcription quality (default standard)."
    },
    "language": {
      "type": "string",
      "description": "Optional BCP-47 hint for transcription, e.g. en."
    },
    "quote_id": {
      "type": "string",
      "description": "A `quote_id` from `quote`: charges exactly the quoted price (400 if unknown or expired)."
    },
    "title": {
      "type": "string",
      "description": "Title for the new collection (default: generated)."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 255,
      "description": "Idempotency-Key for safe retries."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_collection(title, idempotency_key)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "description": "Display name for the collection."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 255,
      "description": "Idempotency-Key for safe retries."
    }
  },
  "required": [
    "title"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡add_sources(collection_id, url, urls, channel_url, channel_urls, ...)

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.10/min standard, $0.25/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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "collection_id": {
      "type": "string",
      "description": "Collection to add the sources to."
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "One YouTube URL (video, @handle, /channel/UC…, or playlist)."
    },
    "urls": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri"
      },
      "description": "Several YouTube URLs."
    },
    "channel_url": {
      "type": "string",
      "description": "`https://www.youtube.com/@handle`, `/channel/UC…`, or a playlist URL."
    },
    "channel_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Several channel or playlist URLs."
    },
    "max_videos_per_channel": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "description": "Newest-first cap applied to each channel or playlist (default 25)."
    },
    "quality": {
      "type": "string",
      "enum": [
        "standard",
        "whisper"
      ],
      "description": "Transcription quality (default standard)."
    },
    "language": {
      "type": "string",
      "description": "Optional BCP-47 hint for transcription, e.g. en."
    },
    "quote_id": {
      "type": "string",
      "description": "A `quote_id` from `quote`: charges exactly the quoted price (400 if unknown or expired)."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 255,
      "description": "Idempotency-Key for safe retries."
    }
  },
  "required": [
    "collection_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_status(job_id)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "The `job_id` from `transcribe` or `add_sources`."
    }
  },
  "required": [
    "job_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_transcript(youtube_id, collection_id, format)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "youtube_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{11}$",
      "description": "The 11-character YouTube video id, e.g. dQw4w9WgXcQ."
    },
    "collection_id": {
      "type": "string",
      "description": "Collection the video is completed in (required with an API key)."
    },
    "format": {
      "type": "string",
      "enum": [
        "json",
        "text"
      ],
      "description": "json (default) or text."
    }
  },
  "required": [
    "youtube_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢query_collection(collection_id, query, session_id, idempotency_key)

Charged: $0.05 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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "collection_id": {
      "type": "string",
      "description": "Collection to query."
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4000,
      "description": "The natural-language question."
    },
    "session_id": {
      "type": "string",
      "description": "Optional session for multi-turn continuity."
    },
    "idempotency_key": {
      "type": "string",
      "maxLength": 255,
      "description": "Idempotency-Key for safe retries."
    }
  },
  "required": [
    "collection_id",
    "query"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本13 個工具