# YouTube MCP server for your AI agent (/docs/youtube)


Bowmark is an MCP server your agent can call to search YouTube and read videos, transcripts,
comments, chapters, channels and playlists. Ask in plain language ("get the transcript of this
video") and the agent gets typed results back. You need no YouTube Data API key and no daily
quota units.

## What your agent can do

* **Read a transcript:** timestamped lines plus the full text, and which caption languages exist.
* **Read a video:** title, channel, description, views, likes, length, publish date, chapters.
* **Read the comments:** author, text, likes, age, pinned, and the replies under each one.
* **Research a channel:** its videos, Shorts, live streams, playlists and posts, paged.
* **Search YouTube,** or search inside one channel, with filters for upload date and length.
* **Your own account:** history, Watch later, liked videos and subscriptions, after you sign in once.

In a test on 2026-11-04, one call read a 61-line transcript, the latest 30 videos from
@veritasium and that channel's page (547 videos) in 15.8 seconds. The full list of sites is on
[Providers](/docs/providers).

## Connect it

MCP URL: `https://api.bowmark.ai/mcp`. Make a key at
[dashboard/keys](https://bowmark.ai/dashboard/keys); your first $10 of usage is free, no card
needed. Every other client is on [Installation](/docs/installation).

  **Claude Code**
    ```sh
    claude mcp add bowmark --transport http https://api.bowmark.ai/mcp \
      --header "Authorization: Bearer $BOWMARK_API_KEY"
    ```

  **Codex**
    In `~/.codex/config.toml`, with `BOWMARK_API_KEY` exported in your shell:

    ```toml
    [mcp_servers.bowmark]
    url = "https://api.bowmark.ai/mcp"
    bearer_token_env_var = "BOWMARK_API_KEY"
    ```

  **Cursor**
    Settings → MCP → **Add new MCP server**, then paste the JSON from
    [Installation](/docs/installation).

Then ask your agent:

```
Use Bowmark to get the transcript and top comments of this YouTube video: <url>
```

## Example

```js
const yt = bowmark.providers.youtube;
const { segments, fullText } = await yt.getTranscript({ video: "dQw4w9WgXcQ" });
const { videos } = await yt.listChannelVideos({ channel: "@veritasium" });
return { lines: segments.length, latest: videos.slice(0, 5).map((v) => v.title) };
```

## FAQ

**How do I get a YouTube transcript in Claude?** Add Bowmark as an MCP server, then ask Claude
for the transcript of a video URL. It returns timestamped lines plus the full text.

**Does it need a YouTube API key?** No. Only your Bowmark key. There is no Google Cloud project
to set up and no daily quota to budget.

**Can it read videos I do not own?** Yes, anything public: transcripts, comments, chapters and
channel pages. Your own account's lists need you to sign in once.

**What does it do beyond transcripts?** It also searches YouTube, pages through a channel's
videos, Shorts and live streams, and reads comments and replies. So an agent can research a
topic or a channel end to end, for example "list @veritasium's last 20 videos and summarise
what the top comments ask for". Tip: the first comment is often the creator's pinned one, and
each comment says whether it is pinned.

**What does it cost?** Free $10 of usage to start, then pay as you go. See
[Pricing](/docs/pricing).
