MCP Server for RenderForm.io - enables rendering images, PDFs, and screenshots from templates, managing render results and templates
RenderForm MCP has well-structured tool definitions with consistent naming (verb_noun pattern), comprehensive parameter schemas using Zod, and tool annotations (readOnlyHint, destructiveHint, idempotentHint). All 11 tools have descriptions and input schemas. However, descriptions vary in quality, some are detailed (render_image: 380+ chars with usage guidance), others are minimal (get_fonts, get_usage: ~50 chars). Parameter descriptions are present but sometimes lack constraint details (e.g., waitTime max 5000ms stated in description but not in schema). Output schemas are not documented, callers cannot predict response structure. Error handling is absent from tool definitions. Pagination is implemented (page, size params) but max limits (50) are not enforced in visible code.
This tool converts a web page into a PDF using RenderForm. - Provide 'url' (required). - Optionally provide 'format' (A5, A4, A3, LETTER or LEGAL - defaults to A4), 'waitTime' (ms, 0-5000) before capturing, and 'expires' (seconds, 1-604800) to auto-delete the generated PDF.
This tool captures a screenshot of a web page using RenderForm. - Provide 'url' (required), 'width' and 'height' (required, 32-5000px). - Optionally provide 'waitTime' (ms, 0-5000) to wait before capturing, useful for pages with animations or async content.
This tool permanently deletes a render result (and its file) from your RenderForm account. - Provide 'identifier' (required), the requestId of the result to delete. - This action is destructive and cannot be undone.
This tool permanently deletes a template from your RenderForm account. - Provide 'templateId' (required). - This action is destructive and cannot be undone.
This tool lists fonts available in your RenderForm account, including Google fonts and any custom uploaded fonts. - No parameters required. - Use this to find a valid font family name to use in a template.
Output schemas not documented. Tools return JSON but callers cannot predict response structure (fields, types, nested objects). LLMs cannot plan downstream operations or extract required IDs for chaining.
Minimal descriptions for discovery tools (get_usage, get_fonts). Both ~50 chars, lack context on when to call them or what structure they reveal. Should explain prerequisites and downstream usage.
No error handling guidance in tool definitions. Callers cannot distinguish retryable errors (rate limit, timeout) from user-fixable (invalid template ID) from fatal (auth failure). No recovery hints provided.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
This tool retrieves details of a single render result by its identifier (requestId). - Provide 'identifier' (required), returned as 'requestId' from the render/screenshot/pdf tools. - Returns status, dimensions, href, template info and timestamps.
This tool lists past render results (images, PDFs, screenshots) in your RenderForm account. - Optionally filter by 'template' or 'batch' identifier. - Supports pagination with 'page' (default 0) and 'size' (default 20, max 50).
This tool retrieves the full details of a single template, including its editable 'properties' (component IDs, property names and default values), fonts and tags. - Provide 'templateId' (required). - Use the returned 'properties' to build the 'data' object for the 'render_image' tool.
This tool lists templates available in your RenderForm account. - Optionally filter by 'name', 'tags' or 'sourceTemplateId'. - Supports pagination with 'page' (default 0) and 'size' (default 20, max 50). - Use this to find a template identifier before rendering or fetching template details.
This tool returns the organization's usage summary: render credits (used/total/renewal), file storage uploads (used/total bytes) and plan/billing status. - No parameters required. - Use this to check remaining credits before running large render batches.
This tool renders an image, PDF or video from a RenderForm template. - Provide 'template' (required): the template ID, e.g. template_1234. - Provide 'data' to merge dynamic content into the template. Keys follow the 'componentId.property' convention (e.g. { "my-text.text": "Hello World!", "my-image.src": "https://example.com/image.jpg" }). - Component IDs and editable properties can be discovered with the 'get_template' tool (see the 'properties' field of the template). - Optionally provide 'fileName', 'webhookUrl' (called when the render finishes), 'version' (cache key - reusing it returns a cached result instead of re-rendering), 'metadata' (passed through to the webhook), 'batchName' (to group renders together) and 'waitTime' (delay before rendering, max 5000ms). - Use 'output: json' (default) to get back a JSON object with the href of the rendered file. Avoid 'output: image' here since it returns raw binary bytes.
Constraint details missing from schemas. Numeric bounds (waitTime 0-5000, page size 1-50) stated in descriptions but not in Zod schema definitions. LLMs cannot validate inputs before calling.
No confirmation or dry-run pattern for destructive operations (delete_render_result, delete_template). Agents can permanently delete resources without verification, risking data loss.