Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.pictify-io/mcp

REMOTE · MCP.PICTIFY.IO · 2 COMPONENTS · SCANNED SEP 22

Generate images, GIFs, videos, and PDFs from HTML, URLs, or templates — from your AI agent.

+7 this week 83 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security91
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
  • HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
  • HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
  • DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
  • The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
Schema Quality & AI Usability63
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 7493 tokens (~299/item across 25 items; 25 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management65
  • Stability check failed: schema churn in the 30 days we've observed: 9 tool removals, 0 breaking changes, 0 auth/transport breaks, 8 additions. See how to fix → Fail
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "pictify_delete_template" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 25 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the io.github.pictify-io/mcp server?

io.github.pictify-io/mcp is a hosted endpoint at https://mcp.pictify.io/, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.pictify.io

# add to Claude Code
claude mcp add --transport http pictify-io-mcp 'https://mcp.pictify.io/'
// .cursor/mcp.json
{
  "mcpServers": {
    "pictify-io-mcp": {
      "url": "https://mcp.pictify.io/"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "pictify-io-mcp": {
      "type": "http",
      "url": "https://mcp.pictify.io/"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.pictify-io-mcp]
url = "https://mcp.pictify.io/"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "pictify-io-mcp": {
      "type": "remote",
      "url": "https://mcp.pictify.io/",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add pictify-io-mcp --url 'https://mcp.pictify.io/' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  pictify-io-mcp:
    url: "https://mcp.pictify.io/"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "pictify-io-mcp": {
      "Transport": "http",
      "Url": "https://mcp.pictify.io/"
    }
  }
}
# add to Vellum
assistant mcp add pictify-io-mcp -t streamable-http -u 'https://mcp.pictify.io/'
// mcp.json
{
  "mcpServers": {
    "pictify-io-mcp": {
      "type": "http",
      "url": "https://mcp.pictify.io/"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +7
    • Stability: pass → fail security
    • Tool “pictify_capture_gif” was removed security
    • Tool “pictify_create_canvas_image” was removed security
    • Tool “pictify_create_gif” was removed security
    • Tool “pictify_get_gif” was removed security
    • Tool “pictify_list_gifs” was removed security
    • Tool “pictify_list_images” was removed security
    • Tool “pictify_list_pdf_presets” was removed security
    • Tool “pictify_render_multi_page_pdf” was removed security
    • Tool “pictify_render_pdf” was removed security
    • Authorization: unverified → pass security
    • First check of Authorization: partial security
    • Tool “pictify_batch_render” rewrote its description, which is the text the model reads security
    • Tool “pictify_get_template_variables” rewrote its description, which is the text the model reads security
    • Tool “pictify_list_templates” rewrote its description, which is the text the model reads security
    • Tool “pictify_render_template” rewrote its description, which is the text the model reads security
    • Server version: 1.5.2 → 2.0.0 functional
    • New tool “pictify_list_expression_functions” functional
    • New tool “pictify_multi_size_render” functional
    • New tool “pictify_update_video_template” functional
    • New tool “pictify_validate_expression” functional
    • New tool “pictify_delete_video_template” functional
    • New tool “pictify_duplicate_video_template” functional
    • New tool “pictify_get_video_template” functional
    • New tool “pictify_list_renders” functional
    • “pictify_render_template” added an optional parameter “preset” cosmetic
    • “pictify_render_template” added an optional parameter “variableSets” cosmetic
  • 15 Sept 26 0
    • Tool “pictify_batch_render” rewrote its description, which is the text the model reads security
    • Server version: 1.5.1 → 1.5.2 functional
  • 8 Sept 26 +9
    • Stability: fail → pass security
  • 26 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 31 to 34.

  • 11 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 9 Aug 26 0
    • Stability: 0.43 → fail security
    • Tool “pictify_complete_experiment” was removed security
    • Tool “pictify_start_experiment” was removed security
    • Tool “pictify_create_experiment” was removed security
    • Tool “pictify_delete_experiment” was removed security
    • Tool “pictify_get_experiment” was removed security
    • Tool “pictify_get_experiment_quota” was removed security
    • Tool “pictify_list_experiments” was removed security
    • Tool “pictify_pause_experiment” was removed security
    • Tool “pictify_track_experiment_events” was removed security
    • Tool “pictify_update_experiment” was removed security
    • DNSSEC: fail → pass security
    • Tool “pictify_batch_render” rewrote its description, which is the text the model reads security
    • Tool “pictify_delete_template” rewrote its description, which is the text the model reads security
    • Schema quality: 186 → 311 functional
    • “pictify_create_gif” added a required parameter “context”, so existing callers break functional
    • “pictify_batch_render” added a required parameter “context”, so existing callers break functional
    • “pictify_cancel_batch” added a required parameter “context”, so existing callers break functional
    • “pictify_capture_gif” added a required parameter “context”, so existing callers break functional
    • “pictify_create_canvas_image” added a required parameter “context”, so existing callers break functional
    • “pictify_create_image” added a required parameter “context”, so existing callers break functional
    • “pictify_create_template” added a required parameter “context”, so existing callers break functional
    • “pictify_delete_template” added a required parameter “context”, so existing callers break functional
    • “pictify_get_batch_results” added a required parameter “context”, so existing callers break functional
    • “pictify_get_gif” added a required parameter “context”, so existing callers break functional
    • “pictify_get_image” added a required parameter “context”, so existing callers break functional
    • “pictify_get_template” added a required parameter “context”, so existing callers break functional
    • “pictify_get_template_variables” added a required parameter “context”, so existing callers break functional
    • “pictify_list_gifs” added a required parameter “context”, so existing callers break functional
    • “pictify_list_images” added a required parameter “context”, so existing callers break functional
    • “pictify_list_pdf_presets” added a required parameter “context”, so existing callers break functional
    • “pictify_list_templates” added a required parameter “context”, so existing callers break functional
    • “pictify_render_multi_page_pdf” added a required parameter “context”, so existing callers break functional
    • “pictify_render_pdf” added a required parameter “context”, so existing callers break functional
    • “pictify_render_template” added a required parameter “context”, so existing callers break functional
    • “pictify_update_template” added a required parameter “context”, so existing callers break functional
    • Server version: 1.4.0 → 1.5.0 functional
    • New tool “pictify_create_video_template” functional
    • New tool “pictify_generate_video_template” functional
    • New tool “pictify_get_video_template_variables” functional
    • New tool “pictify_list_video_templates” functional
    • New tool “pictify_render_video” functional
    • “pictify_batch_render” added an optional parameter “csvUrl” cosmetic
    • “pictify_batch_render” added an optional parameter “mappings” cosmetic
    • “pictify_batch_render” reworded the description of “variableSets” cosmetic
    • “pictify_batch_render” made “variableSets” optional cosmetic
  • 3 Aug 26 0
    • Server version: 1.3.0 → 1.4.0 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 21 Sept 2026 · Probed https://mcp.pictify.io

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=pictify.io CN=WE1,O=Google Trust Services,C=US 4 Aug 2026 2 Nov 2026 ECDSA 256 ECDSA-SHA256 53c21f5cfede14d10ef2fb9450ebdd64
SANs: pictify.io, *.pictify.io
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC secure

Validation of mcp.pictify.io. Secure

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
io. present 57355 8 Verified
pictify.io. present 2371 13 Verified
mcp.pictify.io. Verified address RRset verified with the apex keys
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer realm="pictify", error="invalid_token", error_description="Connect your Pictify account to use this tool", resource_metadata="https://mcp.pictify.io/.well-known/oauth-protected-resource"

Bearer realm="pictify", error="invalid_token", error_description="Connect your Pictify account to use this tool", resource_metadata="https://mcp.pictify.io/.well-known/oauth-protected-resource"

Protected resource metadata

Document https://mcp.pictify.io/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://mcp.pictify.io
Authorisation server https://api.pictify.io

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.pictify.io Verified 200
http (plaintext) http://mcp.pictify.io HTTPS enforced 301 https://mcp.pictify.io/
MCP tools · 25 exposed · ~7,493 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
pictify_batch_render ~584

Render one template many times — one image per row of data. Pass EITHER variableSets (rows inline) OR csvUrl with mappings (rows from a hosted CSV). Exactly one; a call with neither is rejected. Steps: call pictify_get_template_variables first to see what the template expects, call this tool, then poll pictify_get_batch_results with the returned batchId. The job is asynchronous — this returns immediately, before any image exists. Up to 100 rows per batch, plan-dependent. For a PDF rather than images, render the template with pictify_render_template and format: 'pdf'.

NameTypeReqDescription
concurrencynumberNumber of concurrent renders (1-10). Higher values complete faster but consume quota faster. Plan limits: Free=1, Pro=3, Business=10.
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
csvUrlstringCSV mode: URL of a publicly fetchable CSV file — every row becomes one render. Use with 'mappings' to map CSV columns onto template variables. Provide EITHER csvUrl OR variableSets, not both.
formatstringOutput format for all rendered images
layoutstringRender all batch items using a specific layout variant (e.g., 'twitter-post'). Omit for default layout.
layoutsarrayRender all batch items across multiple layout variants. Use 'default' for the base layout. Example: ['default', 'twitter-post']. Each batch item will produce one image per layout (2D results).
mappingsobjectCSV mode: { templateVariable: 'CSV Column' } pairs — the KEY is the template variable, the VALUE is the CSV column name, e.g. { name: 'attendee_name' }. Required when csvUrl is provided.
qualitynumberOutput quality (0.1-1.0) for all rendered images. Only affects JPEG and WebP.
templateIdstringyesThe template UID to batch render
variableSetsarrayArray of variable sets (1-100 items). Each item produces a separate image. Example: [{ name: 'Alice', role: 'CEO' }, { name: 'Bob', role: 'CTO' }] generates 2 images. Provide EITHER variableSets OR c…

No output schema declared.

No examples provided.

pictify_cancel_batch ~174

Cancel a running batch render job. Already completed items will retain their results and URLs. Remaining unprocessed items will be skipped. Use this if you started a batch with incorrect data or no longer need the remaining results.

NameTypeReqDescription
batchIdstringyesThe batch job ID to cancel
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…

No output schema declared.

No examples provided.

pictify_create_image ~682

Generate a static image (PNG, JPEG, or WebP) from HTML/CSS content, a URL screenshot, or a template. Common use cases: Open Graph (OG) images for link previews, social media cards (Twitter/LinkedIn/Facebook), product screenshots, marketing banners, event invitations, and custom graphics. Provide ONE of: 'html' (custom HTML/CSS), 'url' (screenshot a webpage), or 'template' + 'variables' (render a saved template). Returns the hosted image URL (CDN-backed) and asset ID. Maximum dimensions: 4000x4000 pixels. IMPORTANT: The renderer captures the element's actual rendered size, not the viewport. If your HTML content is shorter than the requested height, the output image will be clipped to the content height. To ensure exact dimensions, set explicit width and height on your root element (e.g., a wrapper div) using CSS like: position: absolute; top: 0; left: 0; width: 1920px; height: 1080px; — this guarantees the element fills the full requested area.

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
fileExtensionstringOutput image format. PNG for transparency support, JPEG/JPG for photos (smaller file size), WebP for best compression.
heightnumberImage height in pixels (1-4000)
htmlstringHTML content to render as an image. Include inline CSS or <style> tags for styling. Google Fonts supported via <link> tags. Mutually exclusive with 'url' and 'template'. IMPORTANT: To get exact outpu…
selectorstringCSS selector to capture a specific element instead of the full page (e.g., '.card', '#hero'). Useful when your HTML contains multiple elements but you only want to capture one.
templatestringTemplate UID to render. Use with 'variables' to substitute dynamic values. Mutually exclusive with 'html' and 'url'. Use pictify_list_templates to find templates.
urlstringURL of a web page to screenshot. Must be publicly accessible http:// or https://. Mutually exclusive with 'html' and 'template'.
variablesobjectTemplate variables as key-value pairs. Only used when 'template' is provided.
widthnumberImage width in pixels (1-4000). Common sizes: 1200x630 (OG image), 1080x1080 (Instagram), 1200x675 (Twitter card), 1920x1080 (presentation slide)

No output schema declared.

No examples provided.

pictify_create_template ~543

Create a new reusable template with variable placeholders for dynamic content generation. Templates can use either FabricJS canvas data (from the Pictify visual editor) or raw HTML. Provide ONE of 'html' or 'fabricJSData' — they are mutually exclusive. For HTML templates, use {{variableName}} syntax for dynamic placeholders. Pictify's expression engine supports 50+ functions: IF/ELSE conditionals, string manipulation (toUpperCase, truncate, etc.), date formatting, math operations, and more. After creating, use pictify_render_template to render it with specific values. Returns the created template's ID.

NameTypeReqDescription
categorystringTemplate category for organization
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
fabricJSDataobjectFabricJS canvas JSON object (from canvas.toJSON()). Mutually exclusive with 'html'. This is the standard format from Pictify's visual editor. Canvas objects can have variable bindings for dynamic con…
heightnumberTemplate height in pixels (1-4000)
htmlstringHTML content for the template. Use {{variableName}} for dynamic placeholders. Mutually exclusive with 'fabricJSData'. Supports expressions: '{{IF(premium, "PRO", "FREE")}}', '{{price * 1.1}}'. Includ…
namestringyesTemplate name for identification and organization
outputFormatstringDefault output format: 'image' for PNG/JPEG/WebP, 'pdf' for PDF documents
tagsarrayTags for organizing and filtering templates (e.g., ['social', 'marketing', 'og-image'])
typestringTemplate type (e.g., 'banner', 'card', 'certificate')
variableDefinitionsarrayExplicit variable definitions with types and defaults
widthnumberTemplate width in pixels (1-4000). Common: 1200x630 (OG), 1080x1080 (social square), 1920x1080 (presentation)

No output schema declared.

No examples provided.

pictify_create_video_template ~544

Upload a Remotion scene YOU wrote as a new video template. Use when you want full creative control over the composition — write the TSX yourself instead of delegating the design to pictify_generate_video_template. The source passes a compile gate before anything is saved: on failure you get the compiler errors back and NO template is created, so fix the code and call again. SCENE RULES (violations fail the compile gate or the render): (1) Single file. It must contain `export const schema = z.object({...})` AND `export default` a React function component typed with the schema's props. Every schema field must be flat, carry .default(...), and use .describe('...') — fields become the template's editable variables. (2) Imports ONLY from 'remotion', 'react' and 'zod'. No other packages, no relative imports. (3) ALL animation via useCurrentFrame() + useVideoConfig() with interpolate() and spring(). CSS transitions/animations and Tailwind are forbidden. Always clamp: { extrapolateLeft: 'clamp', extrapolateRight: 'clamp' }. (4) Layout with <AbsoluteFill>, inline styles, system font stacks. If you use <Sequence>, it MUST carry layout="none" and integer literals for from/durationInFrames. (5) No external assets: no fetch, no hard-coded media URLs. Media only via optional string props rendered with <Img> from 'remotion'. Use remotion's random(seed), never Math.random(). (6) Never reference require, eval, dynamic import(), fs, child_process, or the word 'process' — not even in comments or identifiers.

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
durationSecondsnumberVideo length in seconds (1-60)
fpsnumberFrames per second
heightnumberCanvas height in pixels
namestringyesTemplate name shown in the dashboard
tsxstringyesThe complete single-file Remotion scene source, following the rules above
widthnumberCanvas width in pixels

No output schema declared.

No examples provided.

pictify_delete_template ~156

Permanently delete a template. This action cannot be undone. WARNING: Any batch jobs or bindings using this template will stop working.

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
templateIdstringyesThe template UID to delete

No output schema declared.

No examples provided.

pictify_delete_video_template ~162

Permanently delete a video template. This cannot be undone, and any automation rendering from it stops working. Renders already produced from it are unaffected.

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
templateIdstringyesThe video template UID to delete

No output schema declared.

No examples provided.

pictify_duplicate_video_template ~169

Copy a video template into a new one, leaving the original untouched. Use this to branch a working template before changing it. The copy counts against the saved-template limit on your plan.

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
templateIdstringyesThe video template UID to copy

No output schema declared.

No examples provided.

pictify_generate_video_template ~351

Generate a new video template from a text prompt using AI. The service designs a motion brief (palette, beats, typography), writes the scene as code, compiles it, renders preview frames and visually reviews them — then saves a draft template whose text, colors and optional image are editable variables. Use when the user wants a NEW video design; to re-render an existing template with different values, use pictify_render_video instead. Takes 30-60 seconds and is metered as one render. Returns the template UID and a preview image URL; render it with pictify_render_video, or refine it in the studio.

NameTypeReqDescription
brandColorstringOptional brand color (hex) to build the palette around, e.g. '#ff5533'
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
durationSecondsnumberVideo length in seconds (1-60)
heightnumberCanvas height in pixels
promptstringyesWhat the video is for, with any mood/style guidance. Example: 'An 8 second product launch teaser for a developer tool called ShipFast — dark, electric, type-driven'
widthnumberCanvas width in pixels

No output schema declared.

No examples provided.

pictify_get_batch_results ~221

Check the status and results of a batch render job. Returns the job status (pending, processing, completed, failed, partial, cancelled), progress percentage, item counts, and image URLs for completed items. Each result includes index, success boolean, URL, dimensions, and error message (if failed). Call this after pictify_batch_render. If status is 'processing', call again after a few seconds to check for updates.

NameTypeReqDescription
batchIdstringyesThe batch job ID returned by pictify_batch_render
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…

No output schema declared.

No examples provided.

pictify_get_image ~153

Get details of a specific image by its UID. Returns the image URL, dimensions, format, and creation timestamp.

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
imageIdstringyesThe image UID to retrieve

No output schema declared.

No examples provided.

pictify_get_template ~172

Get detailed information about a specific template by its ID. Returns the template's name, dimensions, variable definitions, tags, output format, thumbnail URL, and metadata. Use this to inspect a template before rendering.

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
templateIdstringyesThe template UID to retrieve

No output schema declared.

No examples provided.

pictify_get_template_variables ~228

Get the variable definitions for a template. IMPORTANT: Always call this before pictify_render_template, pictify_multi_size_render or pictify_batch_render, to discover what variables are available. Returns variable names, types (text, image, color, number, boolean), default values, and descriptions. Variables support Pictify's expression engine with 50+ functions for dynamic content (e.g., IF/ELSE conditionals, string manipulation, date formatting, math operations).

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
templateIdstringyesThe template UID to get variables for

No output schema declared.

No examples provided.

pictify_get_video_template ~172

Get one video template in full — its kind (timeline or tsx code), dimensions, fps, duration, variable definitions and current status. Use this before updating one, to see what is there.

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
templateIdstringyesThe video template UID to retrieve

No output schema declared.

No examples provided.

pictify_get_video_template_variables ~177

Get a video template's variable definitions — the fields you can set when rendering it (texts, colors, image URLs). Call before pictify_render_video to know what to pass.

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
templateIdstringyesThe video template UID. Use pictify_list_video_templates to find one.

No output schema declared.

No examples provided.

pictify_list_expression_functions ~161

List the functions available inside template expressions, with a line on what each does. Call this before writing template HTML with {{ }} logic, so the expressions use functions that exist rather than ones that look like they should.

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…

No output schema declared.

No examples provided.

pictify_list_renders ~326

List what this account has rendered — images, GIFs, PDFs and videos in one feed, newest first. Filter by format, by the template that produced them, or by what called for them. Use this to find an earlier render's URL, to check whether a batch produced what was expected, or to report on recent usage. Returns each render's URL, format, dimensions, template and timestamp, plus per-format counts and a 14-day daily histogram.

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
formatstringRestrict to one output format. PNG covers every still image (PNG, JPEG, WebP); MP4 covers video renders.
limitnumberHow many renders to return (1-100).
offsetnumberSkip this many renders, for paging through the feed.
sourcestringOnly renders made by a particular caller, e.g. 'api' for API-key traffic. Omit for every source.
templatestringOnly renders produced by this template UID (image or video template).

No output schema declared.

No examples provided.

pictify_list_templates ~232

List saved templates in your Pictify account with pagination and filtering. Templates are reusable HTML designs with {{variableName}} placeholders for dynamic content. Use this to discover available templates before rendering. Returns template names, IDs, dimensions, output formats, and pagination info.

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
limitnumberNumber of templates per page (1-100, default 12)
outputFormatstringFilter templates by their output format type
pagenumberPage number for pagination (starts at 1)
sortstringSort order for results

No output schema declared.

No examples provided.

pictify_list_video_templates ~203

List the user's video templates with their UIDs, dimensions, duration and kind. Video templates come in two kinds: 'timeline' (built in the visual studio) and 'tsx' (single-file Remotion scenes, often AI-generated). Both render the same way. WORKFLOW: call this first to find a template UID, then pictify_get_video_template_variables to see what it accepts, then pictify_render_video.

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…

No output schema declared.

No examples provided.

pictify_multi_size_render ~363

Render one template at several sizes in a single call — the same design as a 1200x630 OG card, a 1080x1080 square and a 1600x900 banner, say. Use this instead of calling pictify_render_template once per size: it is one request, one set of variables, and the results come back labelled. Different SIZES of one design; for different LAYOUT VARIANTS of it, use the 'layouts' argument on pictify_render_template instead.

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
formatstringOutput format for every size
qualitynumberOutput quality (0.1-1.0). Only affects JPEG and WebP.
sizesarrayyesThe sizes to render (1-20). Each entry is either a preset, or an explicit width and height. Example: [{ label: 'og', width: 1200, height: 630 }, { label: 'square', width: 1080, height: 1080 }]
templateIdstringyesThe template UID to render
variablesobjectTemplate variables, applied to every size. Call pictify_get_template_variables to see what the template expects.

No output schema declared.

No examples provided.

pictify_render_template ~600

Render a saved template with variable substitutions to produce an image or a PDF. This is also how you get a PDF out of Pictify: pass format: 'pdf'. For a multi-page PDF — one page per row of data, e.g. a run of invoices or certificates in a single file — pass variableSets instead of variables. WORKFLOW: 1) Use pictify_list_templates to find a template, 2) Use pictify_get_template_variables to discover its variables, 3) Call this tool with the variable values. Common use cases: OG images with dynamic titles, personalized social cards, product images with prices/descriptions, event banners with speaker info. For rendering the same template with many variable sets, use pictify_batch_render. Returns the hosted image URL (CDN-backed).

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
formatstringOutput format. PNG for transparency, JPEG for photos, WebP for web optimization, PDF for documents.
layoutstringRender a specific layout variant (e.g., 'twitter-post', 'facebook-post'). Omit for default layout. Use pictify_get_template to see available layouts.
layoutsarrayRender multiple layout variants in one request. Use 'default' for the base layout. Example: ['default', 'twitter-post', 'facebook-post']. Returns a results array with one entry per layout.
presetstringPDF only: page size, e.g. 'A4' or 'Letter'. Defaults to the template's own page size. A row taller than the page flows onto the next.
qualitynumberOutput quality (0.1-1.0). Lower values reduce file size. Only affects JPEG and WebP.
templateIdstringyesThe template UID to render
variableSetsarrayPDF only: render one page per row into a SINGLE PDF (1-100 rows). Example: [{ name: 'Alice' }, { name: 'Bob' }] gives a two-page PDF. Use this instead of variables, not alongside it. For one separate…
variablesobjectTemplate variables as key-value pairs. Example: { title: 'My Blog Post', author: 'Jane Doe', avatar_url: 'https://...' }. Use pictify_get_template_variables to see available variables and their types.

No output schema declared.

No examples provided.

pictify_render_video ~327

Render a video template to an MP4 video or an animated GIF, with variable substitutions. Common use cases: personalized video messages, social video posts, animated certificates, product announcement clips, and GIFs for places an MP4 cannot autoplay (chat, email, READMEs). GIF output: timeline templates are palette-converted and capped at 15fps / 720px wide; code (tsx) templates encode GIF natively at half the composition frame rate with no width cap. WORKFLOW: pictify_list_video_templates → pictify_get_video_template_variables → this tool. The render takes up to a few minutes; this tool waits and returns the hosted file URL. Each render consumes one video credit.

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
formatstringOutput format. 'mp4' for video; 'gif' for an animated GIF of the same render.
templateIdstringyesThe video template UID to render
variablesobjectTemplate variables as key-value pairs. Use pictify_get_video_template_variables to discover names and types.

No output schema declared.

No examples provided.

pictify_update_template ~278

Update an existing template's content, dimensions, name, or variable definitions. Only the provided fields will be updated; others remain unchanged. You can update HTML or FabricJS data — provide one or the other, not both. Note: updating content may change the available variables.

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
fabricJSDataobjectNew FabricJS canvas JSON. Mutually exclusive with 'html'.
heightnumberNew height in pixels (1-4000)
htmlstringNew HTML content. Mutually exclusive with 'fabricJSData'.
namestringNew template name
templateIdstringyesThe template UID to update
variableDefinitionsarrayUpdated variable definitions
widthnumberNew width in pixels (1-4000)

No output schema declared.

No examples provided.

pictify_update_video_template ~291

Update a video template's name, dimensions, frame rate, duration, variable definitions, or — for code (tsx) templates only — its Remotion source. Only the fields you pass change. Timeline templates reject 'tsx': those are edited as a scene graph, not as code.

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
durationInFramesnumberComposition length in frames (seconds x fps)
fpsnumberFrames per second
heightnumberComposition height in pixels
namestringNew template name
templateIdstringyesThe video template UID to update
tsxstringReplacement Remotion component source. Code (tsx) templates only — sending this for a timeline template is rejected.
variableDefinitionsobjectReplacement variable schema for the template
widthnumberComposition width in pixels

No output schema declared.

No examples provided.

pictify_validate_expression ~224

Check that a template expression parses before you put it in a template. Pass the inside of the braces, not the braces: 'IF(premium, "PRO", "FREE")', not '{{...}}'. Returns whether it is valid and, if not, what is wrong with it.

NameTypeReqDescription
contextstringyesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVE…
expressionstringyesThe expression to check, without the surrounding {{ }}. Examples: 'price * 1.1', 'toUpperCase(name)', 'IF(count > 0, "in stock", "sold out")'

No output schema declared.

No examples provided.

Common questions

What is the io.github.pictify-io/mcp server?

io.github.pictify-io/mcp is listed in the public MCP registry as io.github.pictify-io/mcp. Generate images, GIFs, videos, and PDFs from HTML, URLs, or templates, from your AI agent. This page covers its hosted endpoint (https://mcp.pictify.io).

Is the io.github.pictify-io/mcp server safe to use?

io.github.pictify-io/mcp scores 83 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.pictify-io/mcp server expose?

io.github.pictify-io/mcp exposes 25 tools: pictify_create_image, pictify_get_image, pictify_list_renders, pictify_list_templates, pictify_get_template, and 20 more. Their descriptions and schemas cost roughly 7,493 tokens of context every time the server is loaded.

Does the io.github.pictify-io/mcp server require authentication?

Yes. io.github.pictify-io/mcp asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the io.github.pictify-io/mcp server still maintained?

io.github.pictify-io/mcp is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.