# YouTube MCP server: upload and schedule videos with your approval

A YouTube MCP server lets an AI agent, such as Claude, ChatGPT, Claude Code or Codex, work with your YouTube channel.
Flaghand is one for publishing. Your agent drafts a video or Short, a reply to a comment, a playlist change or a batch of
comment decisions, and Flaghand checks it against YouTube's rules. You approve each exact item with your passkey, and
Flaghand uploads or posts it at its time. It isn't for reading YouTube: it doesn't fetch transcripts, search videos or
read other channels' data. For those jobs, open-source servers such as kimtaeyoon83/mcp-server-youtube-transcript,
anaisbetts/mcp-youtube and ZubeidHendricks/youtube-mcp-server are built for it.

Every Flaghand workspace can connect a YouTube channel: Google verified Flaghand's YouTube access. Checked on November 3,
2026; [sources](#sources) below.

## Set it up

The server is `https://app.flaghand.com/mcp` (streamable HTTP). Add it to your app:

- **Claude** (Free, Pro and Max; Free allows one custom connector): **Customize › Connectors › Add custom connector**,
  enter Flaghand and `https://app.flaghand.com/mcp`, then **Add** and **Connect**, and sign in. On Team and Enterprise an Owner adds it
  under **Organization settings › Connectors**, then each member connects.
- **ChatGPT** (Business, Enterprise and Edu, on the web): **Plugins › + › Add custom MCP server**, enter
  `https://app.flaghand.com/mcp` under **Connection**, choose **OAuth**, create it as a plugin, install it and sign in. OpenAI's help
  describes read access only on Pro and doesn't establish custom servers on Plus.
- **Claude Code**, for a person typing: `claude mcp add --scope user --transport http flaghand https://app.flaghand.com/mcp`, then
  `/mcp` to sign in. An agent setting this up works over HTTP instead (below).
- **Codex:** `codex mcp add flaghand --url https://app.flaghand.com/mcp` adds the server and signs in. With a saved token instead:
  `codex mcp add flaghand --url https://app.flaghand.com/mcp --bearer-token-env-var FLAGHAND_TOKEN` (only the variable's name is saved).
- **Cursor:** merge `{"mcpServers": {"flaghand": {"url": "https://app.flaghand.com/mcp"}}}` into `~/.cursor/mcp.json`, then connect
  Flaghand in Cursor's MCP settings and sign in.
- **Gemini CLI:** merge `{"mcpServers": {"flaghand": {"httpUrl": "https://app.flaghand.com/mcp", "oauth": {"enabled": true}}}}` into
  `~/.gemini/settings.json`, then run `/mcp auth flaghand` in the next session and sign in.

In Claude and ChatGPT the same sign-in page serves new and existing accounts. Sign in, then click **Allow**.

[Start here](/schedule)
to get an account yourself. You add a card when you approve your first post, or to continue after the free start
([current terms](/pricing)).

### An agent with a shell signs you up over HTTP

A coding agent with no Flaghand access does the
setup in its own session:

1. **Read the plans** (no sign-in):

   ```sh
   curl https://app.flaghand.com/api/v1/plans
   ```

2. **Start the sign-up:**

   ```sh
   curl -X POST https://app.flaghand.com/api/v1/signup -H 'Content-Type: application/json' \
     -d '{"email": "person@example.com", "plan": "monthly", "agent_name": "Claude Code"}'
   ```

   Give the person `signup_url` and `for_person` as they are. Save `claim_code` to a private file such as `claim.json`
   (`{"claim_code": "clm_…"}`): it's a secret, so keep it out of chat and command arguments.
3. **Claim the token** once they've finished:

   ```sh
   curl -X POST https://app.flaghand.com/api/v1/signup/claim -H 'Content-Type: application/json' -d @claim.json
   ```

   A `202` with `"status": "pending"` means they haven't finished: wait the `Retry-After` seconds and claim again. Put
   the token in your secret store and use it as `Authorization: Bearer`. `getMe` (`GET https://app.flaghand.com/api/v1/me`) names
   the workspace.

The full recipe is [set up and connect](https://app.flaghand.com/docs/setup.md).

### Connect the YouTube channel

1. **Start the connection.** An agent whose token has the `connections` scope calls `startConnection` with
   `platform: "youtube"` (`POST https://app.flaghand.com/api/v1/workspaces/{workspace}/connections/youtube/start`) and gives you the
   `url` and `for_person` text. A new account's claimed token has that scope. A chat app's connector token and an
   existing owner's grant don't: then you connect the channel in Flaghand, from its accounts menu or Settings.
2. **Pick the channel on Google's account chooser** and allow access. A Brand Account's channel connects the same way.
   Flaghand asks for **Manage your YouTube account**, which it needs, and **View YouTube Analytics reports**, which you
   can untick.
3. **Check the saved channel.** Flaghand pins the connection to the channel ID that granted it. `listConnections` shows
   it as `external_id` (`UC…`), with its handle. Reconnecting it as another channel is refused.

Connecting publishes nothing. [Connect the right YouTube channel](/docs/guides/connect-youtube-channel-to-scheduler)
covers Brand Accounts and Studio permissions.

Then ask: "Use Flaghand: draft a YouTube Short from this video with a title, a description and tags, scheduled for
Thursday at 5 PM, and send it to me for approval." The agent uploads the file, drafts it, runs the check and gives you
one approval link.

## Approving and posting

The approval sheet shows the video, the channel and YouTube's notice about its Terms of Service, next to **Approve and
upload**. You answer whether the video is made for kids: nothing is preselected and no agent can answer it. You can
change the visibility there too. Your passkey signs the channel, the exact request for YouTube, your answers and the
video file, so changing any of them needs a new approval.

- **Post now:** the upload starts within a minute of approving.
- **Scheduled, public:** by default it uploads as soon as you approve, private, and YouTube makes it public at its time.
- **Unlisted or private:** it uploads at its time.

After the upload, Flaghand reads the video back from YouTube and compares each field with what you approved. Uploads
resume where they stopped, and nothing is uploaded twice.

## What your agent can and can't do on YouTube

| | Through Flaghand |
|---|---|
| Videos and Shorts | Drafts one MP4 or MOV up to 50 MB, with a title, description, tags, an optional thumbnail, visibility and YouTube's altered-content and paid-promotion labels. YouTube decides whether a video is a Short. |
| Check | Title, description and tag limits, whether the video is a Short, and whether the channel is verified for custom thumbnails and videos over 15 minutes |
| Comments on your videos | Reads them live, newest first, including held and likely spam. Drafts replies, and can suggest three replies from Claude, which spends credits |
| Moderation | Drafts a list of comments to publish, hold, reject (and hide the commenter) or delete, approved together |
| Playlists | Drafts a new playlist or a change to one, and adds videos to it |
| Community posts and polls | Drafts the text and poll. You post it yourself: YouTube's API can't post to the Community tab |
| Channel numbers | Reads YouTube Analytics live, if you allowed it, and today's quota use. Neither is stored |
| Approve, schedule or post | No. Only you, with your passkey |
| Made for kids | No. Only you answer it, when approving |
| Comments on other channels' videos | No. That's off |
| Pins, hearts, end screens, cards | No. YouTube's API has no way to do them. Flaghand gives you the exact page, and you do them there |
| Transcripts, search, other channels' data | No |
| Change or delete a posted video | No. You do that in YouTube Studio |

No token can approve, schedule or post. The server refuses an agent that tries, and checks your signed approval again
right before it posts.

## Questions

**Is there a YouTube MCP for Claude?** Yes. In Claude, open Customize › Connectors › Add custom connector, add
https://app.flaghand.com/mcp and sign in. It works on Claude Free, Pro and Max, and in Claude Code. Claude drafts and
checks the upload, and you approve it.

**Can my agent upload to YouTube without asking me?** No. Every upload, reply, playlist change and moderation batch
waits for your passkey approval of the exact item. No Flaghand token can approve, schedule or post, and only you answer
YouTube's made-for-kids question.

**Can it schedule YouTube Shorts?** Yes. The agent marks the draft as a Short and gives it a time. YouTube decides from
the video itself: it has to be square or vertical, and up to 3 minutes. If it isn't, the check says so and offers to post
it as a regular video.

**How many videos can it upload a day?** YouTube gives Flaghand 10,000 quota units and 100 uploads a day, shared by
every customer, reset at 12:00 AM Pacific time. A reply, a moderation call or a playlist change costs 50 units. When the
day's quota is used up, the work waits for the reset and goes on by itself. getYoutubeQuota shows your channel's use
today.

**Can it get transcripts or search YouTube?** No. Flaghand only works on your own channel. Transcript servers such as
kimtaeyoon83/mcp-server-youtube-transcript and anaisbetts/mcp-youtube fetch a video's captions, and
ZubeidHendricks/youtube-mcp-server searches videos and reads channel and playlist details with a YouTube Data API key.

**How do I take my agent's access away?** In Flaghand, open Settings › Agents and click Revoke. To remove Flaghand's
access to the channel, disconnect it in Flaghand. That deletes the stored login and revokes the access at Google,
unless another Flaghand workspace still posts as the same channel.

## Other guides

The same server works in [Claude](/docs/guides/connect-linkedin-and-x-to-claude),
[ChatGPT](/docs/guides/connect-linkedin-and-x-to-chatgpt), [Claude Code](/docs/guides/connect-linkedin-and-x-to-claude-code),
[Codex](/docs/guides/connect-linkedin-and-x-to-codex), [Cursor](/docs/guides/connect-linkedin-and-x-to-cursor) and
[Gemini](/docs/guides/connect-linkedin-and-x-to-gemini). [Connect the right YouTube channel](/docs/guides/connect-youtube-channel-to-scheduler)
helps with Brand Accounts, [let an AI agent post safely](/docs/guides/let-an-ai-agent-post-safely) explains the approval,
and [YouTube thumbnail size](/docs/guides/youtube-thumbnail-size) and [YouTube Shorts dimensions](/docs/guides/youtube-shorts-dimensions)
cover the files.

## Sources

Checked on November 3, 2026.

- Flaghand: [YouTube](https://app.flaghand.com/docs/youtube.md), [set up and connect](https://app.flaghand.com/docs/setup.md),
  [set up in a chat app](https://app.flaghand.com/docs/chat.md)
- [kimtaeyoon83/mcp-server-youtube-transcript](https://github.com/kimtaeyoon83/mcp-server-youtube-transcript): downloads a
  video's transcript, no API key needed
- [anaisbetts/mcp-youtube](https://github.com/anaisbetts/mcp-youtube): fetches subtitles with `yt-dlp`, which you install
  yourself
- [ZubeidHendricks/youtube-mcp-server](https://github.com/ZubeidHendricks/youtube-mcp-server): reads videos, transcripts,
  channels and playlists with a YouTube Data API key; its documented tools only read
- YouTube: [Terms of Service](https://www.youtube.com/t/terms)

YouTube is a trademark of Google LLC. Other names are their owners' trademarks. Flaghand isn't affiliated with or
endorsed by them.

[All guides](/docs/guides.md)
