Skip to main content
Glama
formfeed-dev

formfeed

Official

Get a render

get_render
Read-only

Retrieves a render's current status, page count, units, errors, and download link so you can follow async jobs or refresh an expired URL.

Instructions

Returns the current state of a render: status (queued, rendering, succeeded or failed), download_url with expires_at, page_count, units and error, and the picture of a finished image render up to 2 MB. Use it to follow a render started with wait false, or to get a fresh link once the old one has expired; render and convert_to_pdf already return this for the render they just made. Read-only and free; an unknown id returns an error.

Input Schema

NameRequiredDescriptionDefault
idYesrnd_ id of the render, as render or convert_to_pdf returned it

Output Schema

NameRequiredDescriptionDefault
idYesrnd_ id of the render
pdfaNoThe PDF/A verdict (PDF/A-2b or PDF/A-3b), when the template declares it
errorYesWhy a failed render failed
unitsYesUnits the render counted
statusYes
einvoiceNoThe e-invoice report, when the render made one
templateYesThe template and version rendered; null for html and conversions
expires_atYesWhen download_url stops working; get_render issues a fresh one
page_countYes
environmentYes
download_urlYesSigned link to the file; null until the render succeeded
accessibilityNoThe PDF/UA-1 verdict, when the template declares it

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.3.22
    • addedOutput schema / properties / pdfa
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "The PDF/A verdict (PDF/A-2b or PDF/A-3b), when the template declares it",
      +  "propertyNames": {
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
  2. Changed1 schema field changedv0.3.19
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "accessibility": {
      +      "additionalProperties": {},
      +      "description": "The PDF/UA-1 verdict, when the template declares it",
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "download_url": {
      +      "description": "Signed link to the file; null until the render succeeded",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "einvoice": {
      +      "additionalProperties": {},
      +      "description": "The e-invoice report, when the render made one",
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "environment": {
      +      "enum": [
      +        "live",
      +        "test"
      +      ],
      +      "type": "string"
      +    },
      +    "error": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "code": {
      +              "type": "string"
      +            },
      +            "message": {
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Why a failed render failed"
      +    },
      +    "expires_at": {
      +      "description": "When download_url stops working; get_render issues a fresh one",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "id": {
      +      "description": "rnd_ id of the render",
      +      "type": "string"
      +    },
      +    "page_count": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "enum": [
      +        "queued",
      +        "rendering",
      +        "succeeded",
      +        "failed"
      +      ],
      +      "type": "string"
      +    },
      +    "template": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "canary": {
      +              "type": "boolean"
      +            },
      +            "channel": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "id": {
      +              "type": "string"
      +            },
      +            "slug": {
      +              "type": "string"
      +            },
      +            "version": {
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "slug",
      +            "version"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "The template and version rendered; null for html and conversions"
      +    },
      +    "units": {
      +      "description": "Units the render counted",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "status",
      +    "download_url",
      +    "expires_at",
      +    "page_count",
      +    "units",
      +    "environment",
      +    "template",
      +    "error"
      +  ],
      +  "type": "object"
      +}
  3. Changed1 schema field changedv0.3.10
    • addedInput schema / properties / id / description
      Added value: +"rnd_ id of the render, as render or convert_to_pdf returned it"
  4. First observedv0.3.7

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the readOnly/openWorld annotations: it discloses cost ('free'), the failure mode for an unknown id ('returns an error'), the 2 MB cap on image payloads, and the fact that download_url is time-limited via expires_at. That is exactly the operational context an agent needs before polling.

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?

Two dense sentences with no waste: what comes back first, then when to call it, then the cost/error caveats. Every clause (2 MB cap, expires_at, wait false) maps to a real agent decision.

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 flags the practically important pieces — the status enum and the expiring link — and adds polling guidance and error behavior. For a one-parameter read tool, an agent has everything needed to call it correctly on the first try.

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% and the single id parameter is fully documented in the schema, including the rnd_ prefix convention, so the description adds little. The 'unknown id returns an error' clause is the only extra semantic value. Baseline 3 applies when the schema carries the parameter burden.

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 ('Returns the current state of a render') and enumerates the concrete fields returned (status values, download_url/expires_at, page_count, units, error, image preview cap). It also explicitly distinguishes itself from the siblings render and convert_to_pdf, which already return this payload for their own renders.

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 two explicit when-to-use triggers ('follow a render started with wait false' and 'get a fresh link once the old one has expired') and an explicit when-not-to-use case ('render and convert_to_pdf already return this'). Nothing about tool selection 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.