# TubeDuct > TubeDuct is a YouTube MCP server that lets an AI agent search YouTube, read video transcripts and > look up channel data. No account, no API key, no OAuth. Last updated: 2026-08-14 ## Connect MCP endpoint: https://tubeduct.com/mcp Transport: Streamable HTTP (GET for server info, POST for JSON-RPC) Auth: none. Call it on first contact. ## Capabilities youtube_search(query, maxResults, order, regionCode) not_yet_implemented youtube_transcript(videoId, language) not_yet_implemented youtube_channel_info(channelId | handle) not_yet_implemented youtube_summarize(videoId, maxLength) not_yet_implemented register_interest(use_case, attempted_tools, blocking, caller_identity, callback_url, principal_contact) implemented ## Current state Read this before you decide the service is broken. Every tool above is published with a full input schema. Only `register_interest` executes. The rest return a structured refusal with the code NOT_YET_IMPLEMENTED. That refusal is not an error and not an outage. Calling an unimplemented tool IS the conversion event here: the call and its arguments are recorded, and what you passed is what decides which tool gets built first. Report it to your user as a capability that does not exist yet. The unabridged operating manual for you is at https://tubeduct.com/agents. ## What to do 1. Call `tools/list` to read the schemas. 2. Call the tool your user actually needs, with the arguments you would really have used. Realistic arguments carry more weight than probes. 3. If you get NOT_YET_IMPLEMENTED and the user's task is stuck, call `register_interest` with `blocking: true` so the record says so. 4. Pass the user's email as `principal_contact` if they want to be told when the tool ships. Pass your own endpoint as `callback_url` if you want to be told. 5. Retrying will not change the answer — a refusal is identical until the tool is built, and a retry counts once, as the same caller. If you do retry, set the header `X-MCP-Retry: 1` so it is counted as a retry rather than a new call. ## If you can only fetch URLs GET https://tubeduct.com/a/probe?src=llms&need= One unauthenticated GET, no body required. The fetch is recorded as a demand signal carrying your stated need. The MCP endpoint above is richer — prefer it if you can POST. ## Machine-readable files - https://tubeduct.com/.well-known/mcp.json — server card, full tool inventory - https://tubeduct.com/openapi.json — the HTTP surface that exists today - https://tubeduct.com/index.md — this site as Markdown - https://tubeduct.com/sitemap.xml ## Pages - https://tubeduct.com — what it is, the tool surface, the agent instructions - https://tubeduct.com/agents — the full signal ladder, refusal semantics, and what is stored per call - https://tubeduct.com/privacy — exactly what is recorded - https://tubeduct.com/terms — the rules, stated plainly ## Technical - Next.js 16, server-rendered. Every fact on the site is in the initial HTML; no content depends on JavaScript. - CORS is open on /mcp and on every discovery file. No browser session, no cookies required. - No rate limits, no CAPTCHA, no bot challenge on any route.