Skip to main content
Glama

list_caption_jobs

Read-onlyIdempotent

List your caption jobs newest first to recover a lost job ID or review recent results. Returns one page; pass nextCursor with the same status filter to continue. Includes running, failed, and completed jobs, including completed jobs whose files expired. No captioning charge. Use get_caption_job for one job's details and download links. Similar submissions may need user confirmation; a missing row does not make resubmission safe. Retry an interrupted submission with its original idempotencyKey and payload when available.

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": "list_caption_jobs"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoNumber of jobs per page, 1 to 100. Defaults to 25.
cursorNoThe nextCursor from a previous page. Keep the same status filter.
statusNoFilter by one job status; omit for all states.

Output Schema

NameRequiredDescriptionDefault
jobsYes
balanceYes
nextCursorYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedOutput schema / properties / jobs / items / properties / preset / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "highlight",
      -      "clean",
      -      "boxed"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "enum": [
      +      "highlight",
      +      "clean",
      +      "boxed",
      +      "karaoke",
      +      "word",
      +      "punch",
      +      "wordbox",
      +      "reveal",
      +      "glow"
      +    ],
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / jobs / items / properties / style
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "animation": {
      +          "description": "How each caption arrives: none (the default), or pop (scales in with a small overshoot).",
      +          "enum": [
      +            "none",
      +            "pop"
      +          ],
      +          "type": "string"
      +        },
      +        "boxColor": {
      +          "description": "The plate colour on boxed, default black. wordbox's box marks the spoken word, so highlightColor sets it.",
      +          "pattern": "^#?[0-9a-fA-F]{6}$",
      +          "type": "string"
      +        },
      +        "boxPadding": {
      +          "description": "Box padding as a percent of the text size, 5 to 60, on boxed (default 22) and wordbox (default 18).",
      +          "maximum": 60,
      +          "minimum": 5,
      +          "type": "integer"
      +        },
      +        "breakOnSentence": {
      +          "description": "Start a new caption after every . ! ? or …, so no caption spans two sentences. Default off.",
      +          "type": "boolean"
      +        },
      +        "fontSize": {
      +          "description": "Text size as a percent of the preset's own size, 50 to 200, default 100. Above 100 it is a maximum: a word too wide for the frame is shrunk to fit. Bigger text puts fewer words on each caption.",
      +          "maximum": 200,
      +          "minimum": 50,
      +          "type": "integer"
      +        },
      +        "highlightColor": {
      +          "description": "The spoken word's colour as a hex RGB such as #FFE500: its text on highlight and punch, the sweep on karaoke, its box on wordbox. Defaults to the CaptionPipe accent (yellow on punch).",
      +          "pattern": "^#?[0-9a-fA-F]{6}$",
      +          "type": "string"
      +        },
      +        "maxWords": {
      +          "description": "At most this many words on screen at once, 1 to 12. Default unlimited (a character budget applies), 1 on word, 3 on punch.",
      +          "maximum": 12,
      +          "minimum": 1,
      +          "type": "integer"
      +        },
      +        "offsetY": {
      +          "description": "Distance from the bottom or top edge, as a percent of the frame height, 0 to 45. Default 22 on a portrait video, 12 on 16:9. Ignored when position is middle.",
      +          "maximum": 45,
      +          "minimum": 0,
      +          "type": "number"
      +        },
      +        "outlineColor": {
      +          "description": "The outline colour as a hex RGB, or the halo's on glow. Default black, violet on glow. Ignored by boxed, whose plate replaces the outline.",
      +          "pattern": "^#?[0-9a-fA-F]{6}$",
      +          "type": "string"
      +        },
      +        "paddingX": {
      +          "description": "Space kept clear at each side, as a percent of the frame width, 0 to 20. Default 9 on a portrait video (clear of TikTok's side icons), 6 on 16:9.",
      +          "maximum": 20,
      +          "minimum": 0,
      +          "type": "number"
      +        },
      +        "position": {
      +          "description": "Where captions sit: bottom, middle or top. Default middle on word, bottom on every other preset.",
      +          "enum": [
      +            "bottom",
      +            "middle",
      +            "top"
      +          ],
      +          "type": "string"
      +        },
      +        "textColor": {
      +          "description": "The text colour as a hex RGB. Default white.",
      +          "pattern": "^#?[0-9a-fA-F]{6}$",
      +          "type": "string"
      +        },
      +        "uppercase": {
      +          "description": "Burn the captions in capitals. Default off, on for punch. The SRT, VTT and words.json keep normal case.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / jobs / items / required
      Previous value: -[
      -  "jobId",
      -  "status",
      -  "preset",
      -  "durationSeconds",
      -  "chargedSeconds",
      -  "createdAt",
      -  "completedAt",
      -  "renderStatus",
      -  "expiresAt",
      -  "expired",
      -  "errorCode",
      -  "sourceKind",
      -  "retryAfterSeconds",
      -  "uploadUrlExpiresAt",
      -  "uploadClaimExpiresAt"
      -]New value: +[
      +  "jobId",
      +  "status",
      +  "preset",
      +  "style",
      +  "durationSeconds",
      +  "chargedSeconds",
      +  "createdAt",
      +  "completedAt",
      +  "renderStatus",
      +  "expiresAt",
      +  "expired",
      +  "errorCode",
      +  "sourceKind",
      +  "retryAfterSeconds",
      +  "uploadUrlExpiresAt",
      +  "uploadClaimExpiresAt"
      +]
  2. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantive traits: what states are included (running, failed, completed, even expired files), pagination semantics, and that listing incurs no captioning charge. The resubmission-safety caveat is behavioral context an agent cannot infer from annotations.

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 and primary use case are front-loaded, and each sentence contributes (pagination, alternatives, retry guidance). It is dense with five sentences, but none are filler; slight trimming of the resubmission caveat would tighten it.

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?

With an output schema present, return values needn't be explained. The description covers purpose, pagination, alternative tools, state coverage, and safety caveats, leaving no gap an agent needs in order to call it correctly.

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 a real cross-parameter constraint the schema lacks: cursor must be passed 'with the same status filter'. The status filter and page-size behavior are otherwise already documented in the schema.

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?

States a specific verb and resource ('List your caption jobs'), adds ordering ('newest first'), and names the primary use cases (recover a lost job ID, review recent results). It also contrasts with the sibling get_caption_job, so an agent can distinguish them without opening schemas.

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?

Explicitly routes the agent: 'Use get_caption_job for one job's details and download links' and 'pass nextCursor with the same status filter to continue'. It also warns on resubmission safety ('a missing row does not make resubmission safe') and gives a retry path with idempotencyKey, covering when-not and what-instead.

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