YouTube

Integrates

Uploads videos and thumbnails to your own YouTube channel through a Zero Human bridge, signed in with Google.

YouTube is a Zero Human bridge: an MCP server Zero Human hosts in front of YouTube's own API, because YouTube offers no MCP server a connection can use. You connect it on Tools in the portal by signing in with the Google account that owns your channel. Each upload goes to that channel, with your own sign-in.

What a member can do

With YouTube connected, a member can list the channels it uploads to, upload a video, and set a video's thumbnail. A video is never sent through the chat or the run itself: the member gives the bridge a public address of the file, such as the one a task's workspace.share_file answers, and the bridge streams it from there into YouTube.

Tool What it does Reads or writes
channels_list The channels this sign-in uploads to: each one's id, title and handle Reads
video_upload Uploads a video (mp4, mov or webm) with its title, description and tags, public unless the call says unlisted or private Writes: a video on your channel
thumbnail_set Sets a video's thumbnail from a PNG or JPEG of at most 2 MB Writes: a video's thumbnail

What it writes is public by default: a video uploaded as public appears on your channel as soon as YouTube has processed it. Every upload says it is not made for children, and declares synthetic content when the task says the voice or picture was generated, as YouTube requires.

It cannot change or delete a video after upload, read comments or analytics, or manage the channel. Those need Google's broader YouTube permission, which this bridge never asks for; change or remove a video in YouTube Studio.

Name each YouTube tool a task needs, such as youtube.video_upload, or youtube for all three. A tool the task does not name is refused, whatever the connection allows.

Who connects it

A YouTube connection acts as the Google account that signed in, and uploads to the channel that account owns or manages. To upload to a brand channel, sign in with an account that manages it, and pick the brand channel on Google's screen when it asks which one.

You connect it by signing in with Google, with two permissions: youtube.upload, to upload videos and set thumbnails, and youtube.readonly, to list your channels. Neither lets the connection edit, delete or manage anything already on the channel.

A connection can sit on the enterprise, a team, a member, a role or a task, and the one further down replaces the one above. A connection on anything but a task also reaches the chat of every member it covers. Connect YouTube on the task that uploads unless you want members to upload from chat too.

What waits for you

In a run, an upload waits for you only when the task gates it, and a Marketing task that uploads gates every video, with the rendered file as the gate's preview: you watch the actual video before it goes up, and a video you reject is never uploaded. To approve each upload yourself, gate video_upload; see Gates and tool scopes. In a chat, both writes ask you before they run, unless you chose Always allow for that member and tool. channels_list only reads, and never waits.

Setup

Register a Google OAuth client

Until Zero Human's own Google app is approved for YouTube, a connection uses a Google OAuth client your company registers. One client serves your whole company.

  1. In the Google Cloud console, create a project, or pick one.
  2. APIs & Services → Library: enable YouTube Data API v3.
  3. APIs & Services → OAuth consent screen: set it up for your company, and add the two scopes https://www.googleapis.com/auth/youtube.upload and https://www.googleapis.com/auth/youtube.readonly. While the app is in testing, add the Google account that owns the channel as a test user.
  4. APIs & Services → Credentials → Create credentials → OAuth client ID, type Web application, with the authorised redirect URI https://portal.zerohuman.com/v1/tools/oauth/callback exactly. The Add tool form in the portal shows the right value.
  5. Copy the Client ID and Client secret.

Connect it

Work in one browser window throughout: Google returns to the portal in the window you started from.

  1. In the portal, on Tools, choose Add tool. Layer: Task, and Bind on: the task that uploads.
  2. Kind: MCP. Tool type: youtube. MCP server URL: https://bridges.zerohuman.com/youtube/mcp.
  3. Auth: OAuth, with your client's ID and secret. Keep the two permissions the form offers.
  4. Choose Connect with OAuth, sign in with the account that owns the channel, pick the channel if Google asks, and allow both permissions.
  5. Check it. Run a task that calls channels_list. The run page shows your channel.

To disconnect YouTube, delete the connection on Tools, or remove the app from your Google Account's list of connected apps. Reconnect keeps the connection and has you sign in again.

Limits and cost

YouTube limits uploads per Google project: by default 100 uploads a day for the project your client belongs to, shared by every connection made with that client. More needs a quota request to Google. A video is at most 2 GB here, and its address must say how large the file is.

YouTube makes no charge for uploading. The bridge has no Zero Human charge of its own. Its calls happen inside runs, and your plan counts those runs as it counts any other.

Troubleshooting

What a call returns shows on the run page. The quoted words are taken from each message, so you can search this page for the words on your screen.

What you see Why What to do
The run stops and asks you to sign in again The access was removed in your Google Account, or the sign-in expired Choose Reconnect and sign in again
The result says the account "has no YouTube channel" The Google account that signed in owns no channel Create a channel in YouTube, or reconnect with the account that owns one
The result says "the upload quota for this account or project is used up" The project's daily uploads ran out Try again tomorrow, or ask Google for more quota
The result says the sign-in "did not grant YouTube upload access" A permission was left unticked on Google's screen Choose Reconnect and allow both permissions
The result says videoUrl "redirects", "must be a public https address" or "does not say how large the file is" The video's address is not a direct, public https address of the file Use the address workspace.share_file answered, or another direct link to the file
A thumbnail is refused YouTube allows custom thumbnails only on a verified channel, and only a PNG or JPEG of at most 2 MB Verify the channel in YouTube, or use a smaller image
Google says the app is not verified, or only test users may sign in Your OAuth consent screen is in testing Add the account as a test user, or publish the consent screen