Skip to main content
Glama

Show extracted frames

getvideoframes_render_frames
Read-onlyIdempotent

Render one ChatGPT filmstrip card for a completed extraction so the user can see the frames. Call this after getvideoframes_get_job or getvideoframes_get_demo returns status completed. Pass that same id. Use source=demo for a public demo id. Do not call this while the job is queued or processing. In ChatGPT, opening one frame in this card uploads that JPEG to ChatGPT so you can see it on the next reply. getvideoframes_get_frame still returns the image bytes for other clients.

Input Schema

NameRequiredDescriptionDefault
idYesJob or demo id
sourceNojob uses the connected account. demo is the public preview. Default job
api_keyNogvf_live_ key. Omit when the MCP connection is already authorized. Not used for demos

Output Schema

NameRequiredDescriptionDefault
idYes
framesYes
sourceYes
statusYes
frames_countYes
duration_secondsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / source
      Added value: +{
      +  "enum": [
      +    "job",
      +    "demo"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "id",
      -  "status",
      -  "duration_seconds",
      -  "frames_count",
      -  "frames"
      -]New value: +[
      +  "id",
      +  "source",
      +  "status",
      +  "duration_seconds",
      +  "frames_count",
      +  "frames"
      +]
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "duration_seconds": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "frames": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "index": {
      +            "anyOf": [
      +              {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "timestamp": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "url": {
      +            "format": "uri",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "index",
      +          "timestamp",
      +          "url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "frames_count": {
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "id": {
      +      "type": "string"
      +    },
      +    "status": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "status",
      +    "duration_seconds",
      +    "frames_count",
      +    "frames"
      +  ],
      +  "type": "object"
      +}
  3. Added

TDQS

A4.9/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly/idempotent/non-destructive), and the description adds behavior those annotations cannot: the ChatGPT-specific side effect that opening a frame uploads the JPEG to ChatGPT for the next reply, plus the source=demo routing. That is exactly the kind of context beyond structured fields the dimension rewards.

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?

Every sentence earns its place: prerequisite, id binding, source guidance, exclusion, and the ChatGPT upload behavior are all front-loaded and non-redundant.

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 need not be described. The description covers when to call, what id to pass, when not to call, and the client-specific side effect, which is complete for this tool.

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 the baseline is 3. The description adds meaning beyond the schema by tying the id parameter to the prior get_job/get_demo call ('Pass that same id') and clarifying source=demo usage, which is more than the enum alone 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?

States a specific verb+resource ('Render one ChatGPT filmstrip card for a completed extraction') and explicitly distinguishes itself from sibling getvideoframes_get_frame, which 'still returns the image bytes for other clients.' An agent can separate these two without opening either 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?

Gives explicit prerequisites ('Call this after getvideoframes_get_job or getvideoframes_get_demo returns status completed'), an exclusion ('Do not call this while the job is queued or processing'), and the alternative for other clients (get_frame). 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.

Resources