Skip to main content
Glama

Get Render

get_render
Read-onlyIdempotent

Read ONE render's record without waiting on it: status, progress while it runs, outputUrl + outputExpiresAt once complete, the typed failure (errorCode / category / retryable) if it failed, and WHAT RENDERED — compositionId (the composition it froze), format (aspect/fps/resolution it encoded at), engine, createdAt / completedAt, outputDurationSec, and the preview window for a preview_clip. Free, read-only, instant — use it to audit or correlate a past render (which composition, when, how long) where wait_job would block; wait_job remains the way to block until a running render finishes. An expired outputUrl is refreshed with refresh_render_url.

Input Schema

NameRequiredDescriptionDefault
renderIdYesrenderId (path).
projectIdYesprojectId (path).

Output Schema

NameRequiredDescriptionDefault
idNo
errorNoHuman-readable failure message. Pair with `errorCode` for a stable, machine-readable code an agent runner can branch on.
engineNoThe render engine the row was minted for. Null on rows minted before the engine was recorded.
formatNoThe resolved output format the render was encoded at (aspectRatio, fps, resolution): the frozen composition's, after any create-time scale override. Null on legacy rows.
statusNo
listUsdNoA2 money stamp: the metered event's LIST price (USD), stamped at the success terminal (exports for deliverable renders, compose_capture for A8 previews). A plan allowance may zero the actual invoice line — this is the list price, never a Stripe charge. Absent while running, on failure, and for x402 orgs (on-chain receipts). Mirrors the get_usage ledger.
previewNoThe scoped preview window when this is a preview_clip render; null for a full deliverable.
categoryNoFailure taxonomy when status is `error`; null otherwise. `authoring` = deterministic defect in YOUR composition/request — fix it, retrying is futile; `transient` = temporary pipeline/infra failure — safe to retry_render; `internal` = unexpected server fault — retry once then escalate. Mirrors the render.failed webhook's `category`.
progressNoNon-terminal render progress; phase is one of the worker's emitted stages.
warningsNoNon-fatal advisories surfaced at render-CREATE (omitted when none, and on GET — create-time only).
createdAtNo
errorCodeNoStable, machine-readable error code (e.g. `render_pipeline_unavailable`, `render_route_missing`, `render_pipeline_failed`). Null when status is not `error` or unavailable for an older render.
outputUrlNo
retryableNoWhether re-attempting the SAME render can succeed (status `error`); null otherwise. true → call retry_render. false → deterministic (category authoring/internal); fix the composition first — retry_render alone reproduces it. Mirrors the render.failed webhook's `retryable`.
updatedAtNoISO-8601 timestamp of the render's most recent progress update. Compute staleness = now − updatedAt to distinguish a wedged render from a slow one and decide whether to wait, cancel, or retry.
completedAtNoISO-8601 instant the render reached its terminal status (complete, error or cancelled); null while it runs. Pair with createdAt for the wall time.
errorDetailsNoStructured failure context — `{ targetUrl?, upstreamStatus?, upstreamCode?, attemptedAt? }`. Surfaced so agent runners can distinguish operator-config issues from upstream-down vs route-missing without parsing `error`.
compositionIdNoThe composition this render froze at create time (the project's active one, or the compositionId the request named). Null on renders minted before this was recorded.
outputExpiresAtNo
outputDurationSecNoThe output's length in seconds (the composition timeline's, or the preview window's), as billed. Null on legacy rows.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, so the bar is lower; the description still adds latency semantics ("instant", "without waiting") and the expiry behavior of outputUrl with the recommended recovery tool. It does not restate annotation claims in a contradictory way. Minor gap: no mention of error surfacing for unknown renderId or project scoping behavior.

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?

The core capability and the wait_job contrast are front-loaded, and the sentences are dense but earned. The long field enumeration is slightly overstuffed given an output schema exists, but it remains scannable rather than redundant filler.

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 2-param read tool with annotations and an output schema, the description supplies all selection-critical information: scope, non-blocking behavior, failure fields, and URL refresh path. The field enumeration partially duplicates the output schema, leaving a small redundancy rather than a gap.

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%, but the schema descriptions are placeholder-thin ("renderId (path)."). The description adds no semantics about renderId/projectId formats or scoping, so the baseline 3 is the right ceiling when the schema nominally covers both parameters.

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 opens with a specific verb and resource ("Read ONE render's record") and immediately scopes it against the sibling that blocks ("without waiting on it"). It enumerates the concrete payload (status, progress, outputUrl/expiry, typed failure fields, compositionId, format, engine, timestamps), so an agent knows exactly what it retrieves and how it differs from wait_job.

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?

It states both when to use it ("audit or correlate a past render ... where wait_job would block") and when not to ("wait_job remains the way to block until a running render finishes"). It also routes the expired-URL case to refresh_render_url, giving explicit alternatives for the edge condition.

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.