Skip to main content
Glama

Create a lesson

create_lesson

Create a narrated video lesson from a document, text or web page (use when someone wants a document turned into a training, safety or procedure video)

Use when the user brings a document, a block of text or a web page and wants a video, a lesson, an explainer or a summary video of it. Accepted sources: a file (PDF, DOCX, PPTX, MD or TXT, max 50 MB) sent as multipart, which the local MCP server takes as file_path; plain text (max 5 MB); or a public http(s) url whose readable text becomes the document. Every on-screen sentence cites the source paragraph it came from, so use this when the user needs traceable training, safety or procedure videos. Narration is Turkish. Returns a lesson id immediately; nothing renders and no minutes are spent until approve_lesson. Follow it with get_lesson until the storyboard needs approval. With an Idempotency-Key the same request inside 24h returns the same lesson (same key, different body is 409). API documentation: https://zipirapp.com/en/api/

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "create_lesson"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlNoA public http(s) page; its readable text becomes the document.
langNoLanguage of the video's narration and on-screen text. Omit it and an English document gets an English video, any other document a Turkish one. A document in another language than the one you ask for is translated: the quoted source stays in its own language, the narration is in the requested language.
textNoThe lesson text itself (UTF-8, max 5 MB).
titleNoShown in the panel and used in the download file name.
voiceNoNarrator voice key from GET /v1/voices. A voice that declares a language (the premium ones) also sets `lang`; a `lang` that differs is a 400 voice_lang_mismatch. The standard voices declare none and leave `lang` alone. Omit it for the default voice. Premium voices use 1.5x minutes: a 60 s video spends 90 s.
formatNoVideo format. GET /v1/formats lists the live set.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / voice
      Added value: +{
      +  "description": "Narrator voice key from GET /v1/voices. A voice that declares a language (the premium ones) also sets `lang`; a `lang` that differs is a 400 voice_lang_mismatch. The standard voices declare none and leave `lang` alone. Omit it for the default voice. Premium voices use 1.5x minutes: a 60 s video spends 90 s.",
      +  "maxLength": 80,
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / lang
      Added value: +{
      +  "description": "Language of the video's narration and on-screen text. Omit it and an English document gets an English video, any other document a Turkish one. A document in another language than the one you ask for is translated: the quoted source stays in its own language, the narration is in the requested language.",
      +  "enum": [
      +    "tr",
      +    "en"
      +  ],
      +  "type": "string"
      +}
  3. First observed

TDQS

A4.1/5.0
Behavior3/5

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

Rich disclosure beyond the annotations: deferred rendering, no minutes spent until approve_lesson, immediate lesson-id return, 24h Idempotency-Key replay with 409 on body mismatch, and premium-voice minute multipliers. However it never states permission/auth needs and it introduces an `Idempotency-Key` input that appears nowhere in the schema, while the flat claim 'Narration is Turkish' sits awkwardly next to the tool's own `lang` semantics — a behavioral detail an agent could act on wrongly.

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?

Dense and mostly front-loaded: purpose, sources, limits, then lifecycle and cost. The parenthetical '(use when someone wants a document turned into a training, safety or procedure video)' duplicates the very next sentence, and the standalone 'Narration is Turkish' line is an unexplained fragment that conflicts with the language rules around it.

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

Completeness4/5

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

For a zero-required-parameter creation tool with no output schema, the description covers the call lifecycle (create → get_lesson → approve_lesson), the return value (lesson id), cost implications and error modes. The remaining gap is precisely the input-surface mismatch: it advertises a file upload path the schema cannot express, and it does not say which of url/text/file is mutually exclusive.

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 coverage is 100%, so the baseline of 3 applies; the description does add real meaning beyond it (50 MB file / 5 MB text limits, source citations, voice+lang mismatch causing a 400 voice_lang_mismatch, premium voices costing 1.5x minutes). Against that, it refers to a `file_path` argument and multipart upload that do not exist in the schema (which sets additionalProperties: false), so the added semantics are partly misleading.

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 and output artifact ('Create a narrated video lesson') and enumerates the three accepted source kinds (document, text, web page). It also names the concrete producing use case (training, safety or procedure video) and mentions traceable citations, so an agent can tell it apart from list_lessons, get_lesson or approve_lesson without opening a schema.

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?

States explicit when-to-use ('when the user brings a document... and wants a video, a lesson, an explainer or a summary video') and sketches the downstream workflow: 'nothing renders... until approve_lesson' and 'Follow it with get_lesson until the storyboard needs approval.' Sibling routing is therefore unambiguous, not inferred.

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