Runsheet YouTube Scheduler
Server Details
Schedule, publish and retitle YouTube videos, plan the month with AI, and upload from your machine.
- Status
- Healthy
- Uptime
- 26.1% over 23 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 9 tools
Each tool targets a clearly distinct resource or operation: five read tools map to distinct entities (channel, library, schedule, watchlist, playlists), and the three text utilities (count_characters, preserve_line_breaks, style_text) plus make_thumbnail each have unique, non-overlapping purposes. An agent can select correctly from the descriptions alone.
All nine tools use the runsheet_ prefix with a consistent snake_case verb_noun pattern (get_channel, get_library, list_playlists, make_thumbnail, count_characters, preserve_line_breaks, style_text). No mixed conventions or casing deviations.
Nine tools is well within the sensible 3-15 range for a scheduler-plus-utilities server, and each tool earns its place without redundant filler.
The server is named a 'Scheduler' yet exposes no scheduling or write operations at all: runsheet_schedule_video, runsheet_update_metadata, runsheet_file_to_playlist, and runsheet_break_down_breakout are repeatedly referenced as the consumers of the video_ids and playlist ids returned, but none are present. This leaves the core write lifecycle unreachable, so read outputs are dead ends and agents cannot complete the primary workflow.
Available Tools
9 toolsrunsheet_count_charactersCount charactersARead-onlyInspect
Count text against YouTube's limits. Reports the hard cap and the softer cutoff that matters more: a title may be 100 characters but search truncates around 60, and a description may be 5000 but only about 120 show before the more button. Also reports both code points and UTF-16 units, which differ when emoji are present and which is what YouTube's field actually measures. No cost, no allowance used.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The text to count. | |
| field | Yes | Which YouTube field this text is for. Determines the limits reported. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds real context beyond that: 'No cost, no allowance used' (quota behavior) and the code-point vs UTF-16 measurement nuance, which is non-obvious behavior for emoji-containing text.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core measurement claim front-loaded; each clause carries information. Slightly dense with three numeric examples, but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden — and it does, describing both the limit outputs and the dual code-point/UTF-16 measurement. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds concrete semantics for the 'field' enum by giving actual limit values (title 100/search ~60, description 5000/~120 visible), which enriches the choice beyond the bare enum labels.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: counts text against YouTube's limits, and names the exact metrics reported (hard cap, softer cutoff, code points vs UTF-16 units). Clearly distinguishes from siblings like runsheet_style_text or runsheet_preserve_line_breaks, which transform rather than measure text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when you'd use it (to check whether text fits YouTube's display limits), but never states prerequisites, when-not-to-use, or how it relates to alternatives such as style_text. Usage context is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runsheet_get_channelGet the channelARead-onlyInspect
The connected YouTube channel's current state as Runsheet last recorded it: title, handle, subscriber count, total views, video count, and when it was last synced. Read only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the 'Read only' line is largely redundant. However, the description adds genuinely useful behavioral context beyond the annotations: the data is a snapshot 'as Runsheet last recorded it' with a 'when it was last synced' field, telling the agent results may be stale rather than live.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences that are front-loaded with the core purpose and the returned fields. The trailing 'Read only' is a minor redundancy against the readOnlyHint annotation, but nothing is wasted overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned fields and flags the cached nature of the data, which is what an agent needs for a zero-parameter read. The only gap is the lack of routing guidance relative to sibling getters, which is minor for such a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4. No parameter meaning is needed or missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (the connected YouTube channel) and enumerates the exact fields returned (title, handle, subscriber count, total views, video count, last sync), so the purpose is unambiguous. It does not explicitly differentiate itself from siblings like runsheet_get_schedule or runsheet_get_library, but the 'channel' resource is distinct enough that an agent can separate it from the other getters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: it's a read of the channel's recorded state, but there is no statement of when to call it versus the sibling getters or of any prerequisites. The phrase 'as Runsheet last recorded it' hints at cached/local data as opposed to a live API call, which is mildly useful, but no explicit when/when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runsheet_get_libraryGet the libraryRead-onlyInspect
Published videos, most recent first. Each line has the video's views as of Runsheet's latest snapshot, how many it gained over the last seven days where Runsheet has that much history (fewer days are stated as such), the video_id that the write tools take, and a Problem sentence when YouTube restricts the video, such as by age or country. Read only. Returns at most 50. View counts come from Runsheet's snapshots, taken twice a day, and are not live from YouTube; history starts on the day the channel was connected and is limited to the plan's history window.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Filter by format. Default both. | |
| limit | No | How many to return. Default 20, maximum 50. |
runsheet_get_scheduleGet the scheduleRead-onlyInspect
Videos that are scheduled or ready but not yet published, soonest first. This is the running order: what is going out and when. Each line carries the video's video_id, which is what runsheet_schedule_video, runsheet_update_metadata and runsheet_file_to_playlist take. Videos YouTube rejected, removed or could not process, with a slot in the last seven days or ahead, are listed too with the status rejected; they cannot be scheduled. A line ends with a Problem sentence when YouTube reports one: why it will not publish, or a restriction such as age or countries. Read only. Returns at most 50.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many days ahead to look. Default 28, maximum 90. |
runsheet_get_watchlistGet the watchlistARead-onlyInspect
The other YouTube channels this channel watches, measured with the same maths as the creator's own: each one's uploads per week, share of Shorts, and its breakout videos, meaning videos that reached two and a half times the median views of their own format on that channel. Also returns this channel's own uploads per week and Shorts share, so the comparison is like for like. Each watched channel carries a watch_id and each breakout a video_id, which runsheet_break_down_breakout takes. Their numbers are Runsheet's stored copy of public YouTube data, refreshed in the background and held for at most 30 days, not live. Read only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description's closing 'Read only' restates that rather than adding to it. It does add genuinely useful non-obvious context: the numbers are Runsheet's stored copy of public YouTube data, refreshed in the background and held for at most 30 days, so results may be stale rather than live. That is solid disclosure, but it says nothing about empty watchlists, error behavior, or cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns, and the definition of 'breakout videos' earns its space because no output schema exists to explain it. Three dense sentences with little waste, though the parenthetical definition is slightly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of describing returns, and it does so well: per-channel metrics, the creator's own baseline numbers, and the watch_id/video_id handles. It still omits edge cases such as what an empty watchlist returns or any access prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. The description instead documents the shape of the returned IDs, which is a reasonable substitute.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('the other YouTube channels this channel watches') and enumerates the exact metrics returned (uploads/week, Shorts share, breakout videos). It is clearly distinguishable from siblings like runsheet_get_channel because it describes the comparison against the creator's own numbers and names the downstream consumer of the IDs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly establishes the context of use: it returns watch_id and video_id values that runsheet_break_down_breakout takes, effectively routing the agent to the next tool. However, it gives no explicit exclusions or when-not-to-use guidance relative to siblings such as runsheet_get_channel.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runsheet_list_playlistsList playlistsARead-onlyInspect
The playlists on the connected channel, with their ids and how many videos each holds. Use this to find the id for runsheet_file_to_playlist. Read only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true and openWorldHint=true already declare the safety profile, so 'Read only' is largely redundant with the annotation. The description does add useful behavioral context by describing the shape of what comes back (ids plus per-playlist video counts), but it says nothing about pagination, limits, or auth requirements on a potentially large remote listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences that lead with what the tool returns and follow with the downstream use case. The trailing 'Read only' is a minor redundancy with the annotation rather than wasted space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by summarizing the return payload (playlist ids and video counts) and the intended follow-up tool. For a zero-parameter read tool this is nearly complete, though it omits any note on result size or pagination for an open-world channel listing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly implies no input is needed and instead points at the returned id field the caller will want to consume.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (list the playlists on the connected channel) and even summarizes the payload (ids and video counts), which is more than the title conveys. It is clear enough to distinguish from the other runsheet_get_* readers, though it does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete trigger: 'Use this to find the id for runsheet_file_to_playlist.' That tells the agent exactly when to reach for this tool over the other listing/reading siblings. It stops short of stating when not to use it or naming alternative listers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runsheet_make_thumbnailFree YouTube thumbnail makerARead-onlyInspect
Render a YouTube thumbnail as a PNG from a headline and a layout. Returns a URL for the 16:9 version used by long cuts and the 9:16 version used by Shorts, which are different files on YouTube and cannot be substituted for each other.
| Name | Required | Description | Default |
|---|---|---|---|
| art | No | Optional. An art id from runsheet_draw_thumbnail_art, to use as the background. Anything that is not one of those ids is ignored and the thumbnail renders on its plain ground. | |
| foot | No | A short concrete detail along the bottom. | |
| tone | No | bad is red and for a problem, good is green and for an answer, neutral is gold. | |
| brand | No | Channel name, along the very bottom. | |
| kicker | No | The small line above the headline. | |
| layout | No | statement: A flat claim in the largest type that fits. The workhorse; start here. question: The headline as the thing the viewer is already wondering, with the mark oversized. number: A numeral doing the work. For counts, lists, days, and anything with a figure in it. band: Type in a solid band across the lower third. The highest contrast option. | |
| headline | Yes | Three or four words, upper case or not. This is the whole thumbnail. | |
| highlight | No | Comma separated words inside the headline to set in the accent colour. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and openWorldHint already covering the safety profile, the description adds genuinely useful behavioral context: the return value is a URL, two aspect-ratio files are produced, and they are non-interchangeable on YouTube. It stops short of covering failure modes or what happens when layout is omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, front-loaded with the action and result before the caveat. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter rendering tool with no output schema, the description supplies the missing return-shape information (URLs, two aspect ratios) that an agent otherwise could not infer. Minor gap: it does not say what layout is used when the optional layout parameter is omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including the enum vocabularies for tone and layout is already fully documented in the schema. The description only names headline and layout as the drivers, adding nothing the schema does not already say.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and output ('Render a YouTube thumbnail as a PNG') plus the two inputs it is driven by (headline, layout), and distinguishes itself from every sibling, which are all get/list/upload/style tools. The 16:9 vs 9:16 output split further pins down exactly what this produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose but never stated: there is no 'use this when...' or 'do not use this for...' clause, and no named alternative or prerequisite. The relationship to runsheet_draw_thumbnail_art only appears in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runsheet_preserve_line_breaksPreserve line breaksARead-onlyInspect
Insert the invisible character (U+2060 WORD JOINER) that stops YouTube collapsing blank lines in a description, comment or community post. Returns the text ready to paste. Idempotent: running it on already-processed text does not stack characters. No cost, no allowance used.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text containing blank lines to preserve. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true and openWorldHint=false, so the description adds real value: it discloses the exact character used (U+2060), states it returns paste-ready text, guarantees idempotency (no stacking), and notes no cost/allowance is consumed. It stops short of describing edge cases such as input with no blank lines, but the behavioral picture is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, each earning its place: what it does, what it returns, and the idempotency/no-cost guarantees. The purpose is front-loaded with no preamble.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter transform with no output schema, the description covers purpose, the exact mechanism, the return value ('text ready to paste'), idempotency, and cost. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter at 100% schema description coverage, which already documents 'text'. The description implies the input is text containing blank lines but adds no format or syntax detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Insert the invisible character (U+2060 WORD JOINER)') and names the exact problem it solves for YouTube descriptions, comments and community posts. This is clearly distinguishable from siblings like runsheet_style_text or runsheet_count_characters without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use it: text destined for YouTube that contains blank lines. It does not explicitly name alternative tools or state when NOT to use it, but the trigger condition is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runsheet_style_textBold or italic textARead-onlyInspect
Produce bold or italic text for YouTube. Returns BOTH the native asterisk or underscore syntax, which YouTube interprets in comments and community posts, AND Unicode mathematical letters, which are the only option in titles and descriptions where the syntax is shown literally. Prefer the native syntax wherever it works: the Unicode letters are not matched by search and are read letter by letter or skipped by screen readers. No cost, no allowance used.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The text to style. | |
| style | Yes | Which style. Note that 'mono' has no native syntax and italic has no Unicode digits. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already covering safety, the description adds real behavioral context: it returns both native markdown-ish syntax and Unicode mathematical letters, warns that Unicode variants are not searchable and are problematic for screen readers, and notes there is no cost or allowance consumed. It does not describe the exact response payload, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each load-bearing: the capability, the dual output format with usage preference, and the cost note. The most decision-relevant fact (what it returns) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must carry the return-value burden; it explains the two output formats conceptually but not the response structure (field names/shape). Given the low complexity and only two required params, this is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters and the enum values are already documented in the schema. The description reinforces style behavior (which styles lack native syntax or Unicode digits) but adds little tool-call syntax beyond the schema's baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Produce bold or italic text for YouTube') and immediately contrasts itself with tools like runsheet_count_characters or runsheet_preserve_line_breaks by being the styling transform. An agent can identify the function without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditional guidance on output choice: prefer native syntax where it works, Unicode only where syntax renders literally (titles/descriptions). It does not name an alternative styling sibling (there is none) or state exclusions for when not to call it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
- First observed
runsheet_count_characters - First observed
runsheet_get_channel - First observed
runsheet_get_library - First observed
runsheet_get_schedule - First observed
runsheet_get_watchlist - First observed
runsheet_list_playlists - First observed
runsheet_make_thumbnail - First observed
runsheet_preserve_line_breaks - First observed
runsheet_style_text
Related MCP Connectors
Schedule social posts, threads and video to X, LinkedIn, Bluesky, Mastodon and YouTube from your AI.
Schedule and publish videos to TikTok, YouTube, Instagram and 5 more networks.
- PushwingOAuthcom.pushwing
Publish to your YouTube and Instagram accounts: schedule posts, read analytics and manage comments.
The all-in-one YouTube content engine: research, ideas, thumbnails, scripts, and video.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables MCP clients like Claude or Cursor to upload videos from your local machine directly to YouTube, schedule them, and manage channel content through Runsheet.11119 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables managing a YouTube channel through natural language: upload videos, edit metadata, set thumbnails, run pseudo A/B thumbnail tests, and pull analytics.-
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to manage YouTube channels directly, including video publishing, SEO optimization, playlist curation, community interaction, and traffic analytics, all through local OAuth.1MIT
- FlicenseNot gradedqualityDmaintenanceManages YouTube channels via Claude Desktop, enabling AI-powered metadata optimization, video scheduling, playlist management, and backups with safety guardrails.-
Glama MCP Gateway
Add one secure layer between your agents and this server.