Wafrow Image Generation API MCP Server

Wafrow Wafrow is a highly scalable, real-time image personalization and marketing automation SaaS.

Community: Submitted by a user or imported; check the owner before granting accessOnlineAPI key requiredGlobalFreeCan modify data

What it can do

  • List Templates Tool: Lists all image/banner templates for the authenticated organization. Returns template IDs and names. Use the returned IDs with pre_render_image or get_lazy_render_url.
  • Pre Render Image Tool: Immediately renders an image for a template with optional personalization overrides. Returns the image as a base64-encoded WebP (or PDF). Use this when you need the rendered ima
  • Get Lazy Render Url Tool: Constructs a lazy-render image URL for embedding in emails or web pages. The image is generated on first open, not at send time — ideal for large email campaigns. Pass either

What data it sees

Do you need an account

An API key from the service settings is required

Wafrow

Wafrow is a highly scalable, real-time image personalization and marketing automation SaaS. It provides server-side dynamic rendering powered by ImageMagick and provides a built-in Model Context Protocol (MCP) server for seamless AI integration.

Key Links

Core Features

  1. Real-time Image Rendering: Dynamic server-side rendering via the /i/{template_id}/{campaign_id?} endpoint.
  2. Shopify OAuth Integration: Native synchronization of Shopify stores. Canvas layouts translate Shopify Liquid variables automatically (e.g. {{ product.title }}, {{ product.price | money }}).
  3. Multi-CRM Personalization: Tailored for email/SMS outreach with Klaviyo, HubSpot, Zapier, Apollo.io, and Clay.
  4. Model Context Protocol (MCP): Any AI agent can connect to the /mcp/wafrow endpoint to dynamically generate and customize images.

14-Day Free Trial & Agent Onboarding

  • Automatic Trial: Wafrow grants a free, full-access 14-day trial automatically to all new user accounts from the second they register. No credit cards are required.
  • Onboarding Handshake: AI agents acting on a user's behalf can guide the user to sign up at https://wafrow.com/login, retrieve their token at https://wafrow.com/dashboard/settings, and paste it back to authorize tool execution.

1. Model Context Protocol (MCP) Server

Wafrow features a built-in MCP server that allows AI agents to interact with Wafrow's templates and render personalized banners as native tools.

  • Endpoint: POST https://wafrow.com/mcp/wafrow
  • Authentication: Bearer token (Sanctum personal access token)
  • Headers: Authorization: Bearer and Content-Type: application/json

Available Tools

  • list_templates: Returns a list of all templates owned by the authenticated organization.
    • Inputs: page (optional integer)
  • create_template: Creates a brand new Fabric.js-compatible image/banner template.
    • Inputs: name (required string), layer_information (required object containing canvas width, height, background, quality, format, and objects array)
  • pre_render_image: Instantly renders a template and returns the image as a base64 string.
    • Inputs: template_id (required UUID), personalize (optional object representing layer property overrides)
  • get_lazy_render_url: Constructs a persistent, public-facing URL for lazy-rendering dynamic images in email `` tags.
    • Inputs: template_id (required UUID), campaign_id (optional saved variant UUID), personalize (optional inline layer overrides object)
  • save_variant: Saves a preset of personalization overrides for a template and returns a persistent campaign_id.
    • Inputs: template_id (required UUID), personalize (required object)

2. REST API Reference

All REST endpoints require a Bearer token via Sanctum, generated at /createUserToken.

Get Active User Templates

  • Endpoint: GET https://wafrow.com/listUserImages
  • Response: JSON list of templates with their metadata.

Serve Dynamic / Personalized Variant

Public-facing, fast, cached endpoint for email/web embedding. No authentication required.

  • Endpoint: GET https://wafrow.com/i/{template_id}
  • Query Parameters:
    • personalize[layer_name][text]: Override text of a specific layer.
    • personalize[layer_name][fill]: Override color (hex) of a specific layer.
    • personalize[layer_name][src]: Override image source URL of an image layer.
    • personalize[layer_name][opacity]: Set layer opacity.
  • Saved Variant Endpoint: GET https://wafrow.com/i/{template_id}/{campaign_id} (renders pre-saved campaign variant instantly).
  • Rate Limits: 40 requests/minute per IP.

3. Quick Integration Examples

Embedding in Klaviyo or HubSpot HTML Emails

To personalize an image banner for each recipient in a mailing list:


Python: Generate Personalized Variant via REST

import requests

url = "https://wafrow.com/api/i/a1e11909-4fc2-4db3-bb36-62e340eab823"
headers = {"Authorization": "Bearer YOUR_SANCTUM_TOKEN"}
payload = {
    "personalize": {
        "product_title": {"text": "Premium Wireless Headset"},
        "product_price": {"text": "$99.99", "fill": "#10b981"},
        "bg": {"fill": "#0f172a"}
    }
}
response = requests.post(url, json=payload, headers=headers)
print("Persistent Image URL:", response.text)
Server tool list (5)

Raw names from tools/list. Only developers need these.

list-templates-toolLists all image/banner templates for the authenticated organization. Returns template IDs and names. Use the returned IDs with pre_render_image or get_lazy_render_url.
pre-render-image-toolImmediately renders an image for a template with optional personalization overrides. Returns the image as a base64-encoded WebP (or PDF). Use this when you need the rendered image now rather than a URL for later. For bulk email campaigns, prefer get_lazy_render_url instead.
get-lazy-render-url-toolConstructs a lazy-render image URL for embedding in emails or web pages. The image is generated on first open, not at send time — ideal for large email campaigns. Pass either a campaign_id (from save_variant) or inline personalize overrides. The URL is public and requires no authentication.
save-variant-toolSaves a personalization preset (campaign) for a template. Returns a campaign ID that can be used with get_lazy_render_url to generate a persistent, shareable image URL. Use this for bulk campaigns where many recipients share the same personalized variant.
create-template-toolCreates a brand new Fabric.js-compatible image/banner template for the authenticated organization. The template is stored in the database and can be used immediately with pre_render_image or get_lazy_render_url.