Skip to main content
Glama

Generate Text-to-Speech

clipform_generate_tts

Generate narration audio from text with word-level captions. Use this for quiz question narration, survey introductions, form instructions, or any node that benefits from a human voice. Proactively suggest narration for quizzes and content-rich forms - it significantly improves engagement.

Available voices: ryan (British male, clear), sonia (British female, warm), andrew (American male, smooth), ava (American female, vibrant), guy (American male, deep). Pick ONE voice that fits the topic - e.g. a London quiz gets ryan or sonia, a US sports quiz gets andrew or guy - and reuse that SAME voice for every item and every call across the whole form. Never mix voices within one form unless the user explicitly asks for multiple voices.

Use the tone parameter to direct HOW the voice speaks. Always set a tone that matches the form's mood - e.g. quizzes: "Energetic and playful, like a quiz show host teasing the audience", surveys: "Professional but warm, encouraging honest answers", personality quizzes: "Curious and reflective". This dramatically improves the narration quality.

Pass one item or many (max 10) - multiple items run in parallel. Returns audio_url and caption_ref per item - pass caption_ref downstream to clipform_render_composition / clipform_render_video_template / clipform_upload_media_asset to attach this run's word-level captions instead of hand-copying the captions array.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
itemsYesOne or more TTS items to generate
contextYesDescribe the user's underlying goal in one sentence - not the tool you're calling.
form_idNoThe form this is for (from clipform_create_form) - a routing hint only, to pick the right workspace. The result still lands in the workspace library, not on a node. Required on an anonymous session, or this lands in a different workspace and clipform_attach_node_media will not find it.
workspace_idNoWorkspace to act in (id from clipform_whoami workspaces). Omit to use the connection's default workspace.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultsYesOne result per item, in order

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / form_id / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • removedInput schema / properties / items / items / additionalProperties
      Removed value: -false
    • addedInput schema / properties / workspace_id / pattern
      Added value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
  2. Changed1 schema field changed
    • addedInput schema / properties / form_id
      Added value: +{
      +  "description": "The form this is for (from clipform_create_form) - a routing hint only, to pick the right workspace. The result still lands in the workspace library, not on a node. Required on an anonymous session, or this lands in a different workspace and clipform_attach_node_media will not find it.",
      +  "format": "uuid",
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / workspace_id
      Added value: +{
      +  "description": "Workspace to act in (id from clipform_whoami workspaces). Omit to use the connection's default workspace.",
      +  "format": "uuid",
      +  "type": "string"
      +}
  4. Changed2 schema fields changed
    • addedOutput schema / properties / results / items / properties / caption_ref
      Added value: +{
      +  "description": "Pass this as the caption_ref param on clipform_render_composition / clipform_render_video_template / clipform_upload_media_asset to attach this run's word-level captions - never hand-copy the captions array.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / results / items / properties / captions / description
      Previous value: -"Pass as the captions param to upload_media_asset"New value: +"Word-level captions, for reference only - prefer passing caption_ref downstream instead of copying this array."
  5. Changed2 schema fields changed
    • addedOutput schema / properties / results / items / properties / captions / items / properties / words / minItems
      Added value: +1
    • changedOutput schema / properties / results / items / properties / captions / items / required
      Previous value: -[
      -  "start",
      -  "end",
      -  "text"
      -]New value: +[
      +  "start",
      +  "end",
      +  "text",
      +  "words"
      +]
  6. Changed3 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / context
      Added value: +{
      +  "description": "Describe the user's underlying goal in one sentence - not the tool you're calling.",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "items"
      -]New value: +[
      +  "items",
      +  "context"
      +]
  7. Changed1 schema field changed
    • changedInput schema / properties / items / items / properties / voice / description
      Previous value: -"Voice: ryan (British male, clear/articulate), sonia (British female, warm/bright), andrew (American male, smooth/neutral), ava (American female, vibrant/friendly), guy (American male, deep/authoritative). Pick based on the form's topic and audience."New value: +"Voice: ryan (British male, clear/articulate), sonia (British female, warm/bright), andrew (American male, smooth/neutral), ava (American female, vibrant/friendly), guy (American male, deep/authoritative). Pick ONE voice for the whole form based on its topic and audience, then reuse that same voice on every item and every call - never mix voices within a form unless the user explicitly asks for more than one."
  8. Changed1 schema field changed
    • changedOutput schema / properties / results / items / properties / captions / description
      Previous value: -"Pass as the captions param to upload_node_media"New value: +"Pass as the captions param to upload_media_asset"
  9. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "results": {
      +      "description": "One result per item, in order",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "audio_url": {
      +            "type": "string"
      +          },
      +          "captions": {
      +            "description": "Pass as the captions param to upload_node_media",
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "end": {
      +                  "type": "number"
      +                },
      +                "start": {
      +                  "type": "number"
      +                },
      +                "text": {
      +                  "type": "string"
      +                },
      +                "words": {
      +                  "items": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "end": {
      +                        "type": "number"
      +                      },
      +                      "start": {
      +                        "type": "number"
      +                      },
      +                      "word": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "word",
      +                      "start",
      +                      "end"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                }
      +              },
      +              "required": [
      +                "start",
      +                "end",
      +                "text"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "error": {
      +            "type": "string"
      +          },
      +          "ok": {
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "ok"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "results"
      +  ],
      +  "type": "object"
      +}
  10. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare mutating/non-destructive/non-idempotent. The description adds real context beyond that: batching cap of 10, parallel execution, per-item return of audio_url and caption_ref, and where results land. It stops short of noting that repeat calls produce duplicate assets (idempotency consequence), which would matter for a generation tool.

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

Conciseness4/5

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

Purpose is front-loaded and paragraphs are organized by concern (usage, voice, tone, batching). It is longer than strictly needed, repeating voice descriptions that already appear verbatim in the schema enum, but no sentence is wasted.

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, yet the description still tells the agent what comes back (audio_url, caption_ref) and how to consume it downstream, plus the voice/tone selection policy. Complete for an agent to call this correctly on the first try.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds strategy beyond the schema: pick one voice for the whole form and reuse it, always set a tone matching the mood, and pass one or many items. That is guidance the schema text alone only partially conveys.

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?

Opens with a specific verb+resource+output: 'Generate narration audio from text with word-level captions.' It is unambiguous against siblings (no other tool does TTS) and the scope of use is stated immediately.

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

Usage Guidelines5/5

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

Explicit when-to-use cases (quiz narration, survey intros, form instructions), proactive-suggestion guidance, and named downstream alternatives (clipform_render_composition / clipform_render_video_template / clipform_upload_media_asset) for attaching captions. Nothing is left to inference.

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.