Skip to main content
Glama

PrePublish - YouTube script QA

Convert script length to spoken runtime

script_runtime
Read-only

Convert a word count, or a pasted script, into a spoken runtime range, and convert a target runtime back into a word budget. Rates come from Prepublish's own measurement of 349 videos: 25th percentile 160 words per minute, median 181, 75th percentile 201. Choose this for "how long will this script run" or "how many words for a ten-minute video". It is arithmetic on speaking rate only: it excludes pauses, B-roll and demonstrations, so a finished edit usually runs longer.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
word_countNoA word count, if the user already knows it.
script_textNoA script to count. Provide this or word_count or target_minutes.
target_minutesNoA target runtime in minutes, to convert into a word budget.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
caveatYesWhat this arithmetic excludes. Repeat it rather than presenting a single number.
sourceYesWhere the rates come from, with the published write-up.
word_countNoWords counted or supplied. Present when script_text or word_count was given.
word_budgetNoWords needed to fill the target at each rate. Present when target_minutes was given.
target_minutesNoThe target runtime asked for, echoed back. Present when target_minutes was given.
runtime_minutesNoSpoken runtime in minutes at each rate. Present when script_text or word_count was given.
speaking_rates_words_per_minuteYesThe measured rates used, in words per minute: slow is the 25th percentile, median the 50th, fast the 75th.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "caveat": {
      +      "description": "What this arithmetic excludes. Repeat it rather than presenting a single number.",
      +      "type": "string"
      +    },
      +    "runtime_minutes": {
      +      "description": "Spoken runtime in minutes at each rate. Present when script_text or word_count was given.",
      +      "properties": {
      +        "fast": {
      +          "description": "Runtime at the fast rate.",
      +          "type": "number"
      +        },
      +        "median": {
      +          "description": "Runtime at the median rate.",
      +          "type": "number"
      +        },
      +        "slow": {
      +          "description": "Runtime at the slow rate.",
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "fast",
      +        "median",
      +        "slow"
      +      ],
      +      "type": "object"
      +    },
      +    "source": {
      +      "description": "Where the rates come from, with the published write-up.",
      +      "type": "string"
      +    },
      +    "speaking_rates_words_per_minute": {
      +      "description": "The measured rates used, in words per minute: slow is the 25th percentile, median the 50th, fast the 75th.",
      +      "properties": {
      +        "fast": {
      +          "description": "75th percentile speaking rate.",
      +          "type": "number"
      +        },
      +        "median": {
      +          "description": "Median speaking rate.",
      +          "type": "number"
      +        },
      +        "slow": {
      +          "description": "25th percentile speaking rate.",
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "fast",
      +        "median",
      +        "slow"
      +      ],
      +      "type": "object"
      +    },
      +    "target_minutes": {
      +      "description": "The target runtime asked for, echoed back. Present when target_minutes was given.",
      +      "type": "number"
      +    },
      +    "word_budget": {
      +      "description": "Words needed to fill the target at each rate. Present when target_minutes was given.",
      +      "properties": {
      +        "fast": {
      +          "description": "Word budget at the fast rate.",
      +          "type": "integer"
      +        },
      +        "median": {
      +          "description": "Word budget at the median rate.",
      +          "type": "integer"
      +        },
      +        "slow": {
      +          "description": "Word budget at the slow rate.",
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "fast",
      +        "median",
      +        "slow"
      +      ],
      +      "type": "object"
      +    },
      +    "word_count": {
      +      "description": "Words counted or supplied. Present when script_text or word_count was given.",
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "speaking_rates_words_per_minute",
      +    "source",
      +    "caveat"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only, non-destructive annotations, the description discloses the calculation basis (349 videos measured, percentiles 160/181/201 wpm) and the key limitation that it is arithmetic on speaking rate only, so finished edits usually run longer. This is meaningful behavioral context not available in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core function, then adds rate data, usage guidance, and a limitation. Every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. The description covers purpose, usage, limitations, and the underlying rate model, making it complete for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains each parameter. The description reinforces the three modes (word count, pasted script, target runtime) but adds no syntax or format details beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: converting word counts or scripts into runtime ranges, and target runtimes into word budgets. It clearly distinguishes the tool from unrelated siblings (audit/policy tools) and leaves no ambiguity about what it does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage examples: "how long will this script run" and "how many words for a ten-minute video." It also adds a caveat that it excludes pauses, B-roll, and demonstrations, effectively signaling when the estimate is not appropriate. No alternative tools are named, but none exist among the siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources