Back to MCP servers

Wafrow Image Generation API MCP Server

https://server.smithery.ai/wafrow/image-generation-api/mcp
● healthy

# 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 - Main Website: https://wafrow.com - Documentation Hub: https://wafrow.com/documentation - Interactive API Reference: https://wafrow.com/docs/api - MCP Server Endpoint: https://wafrow.com/mcp/wafrow ## 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 <your_token>` 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 `<img>` 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: ```html <img src="https://wafrow.com/i/a1e11909-4fc2-4db3-bb36-62e340eab823?personalize[product_title][text]={{ product.title | url_param_escape }}&personalize[product_price][text]={{ product.price | money | url_param_escape }}" alt="Personalized Banner" width="600" /> ``` ### Python: Generate Personalized Variant via REST ```python 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) ```

Transport
streamable-http
Auth
smithery_api_key
Cost
—
Protocol revision
—

MCP readiness

B · 79/100

Readiness is how fully this listing follows its protocol and how it behaved in our probes over 30 days. It is shown for reference and does not move it in search. Search order and leaderboards use the separate quality grade (here C+, 71.2/100), which weighs availability, conformance, p95 speed and descriptor. How the two differ

Valid MCP handshake 10/10 initialize and tools/list both answered.
Live MCP endpoint 25/25 Endpoint answers the MCP initialize handshake (1924 ms).
Protocol revision 0/10 No protocol revision reported by initialize.
Signed descriptor n/a No MCP standard defines a signed server descriptor.
Uptime (30 days) 15/15 30/30 probes succeeded over 30 days (100%).
Tool declaration 10/10 Lists 5 tool(s) with descriptions.
Verified identity 5/10 Publisher declared (repository, package or homepage); claim this listing to verify domain control.
Freshness + modern flags 4/5 seen in a source within 7 days.
Auth declaration 2/5 Declares credential scheme: smithery_api_key.
Applicable criteria total 90 points, scaled to 100.
Responsiveness: Responsive (1924 ms; bands ≤2.5 s, ≤5 s, ≤8 s, slower; penalty only).
Measured 2026-11-11.
Nine criteria, the same as the A2A readiness score, read from our daily MCP probe (initialize + tools/list) and 30-day probe history. No MCP standard defines a signed server descriptor, so that criterion is n/a and the other 90 points are scaled to 100. Grades: A>=90, B>=75, C>=60, D>=40, F<40. Display only: search order uses the quality grade.

Compared with peers

Against 53,039 reachable MCP servers in our daily snapshot (2026-11-12 06:46 UTC). Display only; it does not change search order.

Readiness
Higher than 40% of peers
This listing 79 · peer median 81
Latency
Faster than 14% of peers
This listing 770 ms · peer median 326 ms

Where it loses the most points, and how to win them back

  • Protocol revision −10 — Support the current protocol revision.
    Now: No protocol revision reported by initialize.
  • Verified identity −5 — Claim the listing and prove control of its domain.
    Now: Publisher declared (repository, package or homepage); claim this listing to verify domain control.
  • Auth declaration −3 — State how to authenticate (an auth scheme, or that none is needed).
    Now: Declares credential scheme: smithery_api_key.

How many agent tools actually work · All statistics

Listed in

Directories this entry was found in.

How to connect

MCP endpoint (streamable-http)
https://server.smithery.ai/wafrow/image-generation-api/mcp
JSON-RPC initialize probe
curl -X POST https://server.smithery.ai/wafrow/image-generation-api/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'
Homepage
https://wafrow.com/docs/api#/#mcp-server
Listed at (smithery)
https://wafrow.com/docs/api#/#mcp-server