{
  "data": {
    "a": {
      "slug": "dynapictures",
      "name": "DynaPictures",
      "vendor": "DynaPictures GmbH",
      "vendorUrl": "https://dynapictures.com",
      "kind": "http-api",
      "category": "design-assets",
      "summary": "DynaPictures, from DynaPictures GmbH in Freiburg, fills templates made in its no-code editor with data to produce images, multi-page PDFs, countdown timer GIFs and AI images, through a REST API, image URLs, forms and a remote MCP server.",
      "url": "https://www.anchorterminal.com/tools/dynapictures",
      "markdownUrl": "https://www.anchorterminal.com/tools/dynapictures.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/dynapictures.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/dynapictures.json",
      "dns": "dynapictures.grade.anchorterminal.com",
      "license": "Closed service under the DynaPictures terms of use (revision 2/2026)",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.dynapictures.com",
      "packages": [],
      "auth": "api-key",
      "authNotes": "One API key per user, copied from the account page and sent as `Authorization: Bearer`, for both the REST API and the MCP server at mcp.dynapictures.com/mcp. The key carries the user's full access, with no workspace or action limits, and a new key is requested by email. No OAuth.",
      "pricing": "freemium",
      "pricingNotes": "Free plan, and a 14-day trial with 30 API credits, neither needing a card. Lite from 250 images a month and Pro from 2,000, priced through a FastSpring checkout whose amounts are drawn by script. One credit per image or PDF page. AI credit packs from $20 for 1,000 credits (about 250 images), which never expire.",
      "priceSummary": "$0.02 / credit",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "Subscriptions and credit packs through FastSpring. No x402, MPP or L402 in the OpenAPI, llms.txt, auth.md or the agent skill (checked 2026-11-06). A spent quota returns 403 and missing AI credits 402, with no payment requirements.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://dynapictures.com/docs/",
      "llmsTxt": "https://dynapictures.com/llms.txt",
      "openapi": "https://dynapictures.com/openapi.json",
      "capabilities": [
        "design.templates",
        "design.render",
        "pdf.generate",
        "image.generate"
      ],
      "tags": [
        "hosted",
        "openapi",
        "llms-txt",
        "mcp",
        "remote-mcp",
        "api-key",
        "freemium",
        "free-tier",
        "no-card",
        "sla",
        "eu"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 43.2,
        "grade": "E",
        "agentReady": false,
        "rank": 1257,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 13,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 45,
          "maintenance": 4,
          "payments": 30,
          "reliability": 42,
          "schema": 82,
          "security": 26,
          "transparency": 63
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "An OpenAPI 3.1 file, an agent skill and a six-month removal notice with Sunset headers make DynaPictures' template rendering easy to plan around, with a free plan and no-card trial. The single API key opens the whole account, requests aren't idempotent, and no changelog, status page or dated release was found.",
        "bestFor": "Personalised images and PDFs per record, image URLs in emails and pages, and email countdown timers, for marketing teams in the EU.",
        "strengths": [
          "OpenAPI 3.1 with 20 paths, llms.txt, auth.md and an agent skill written for agents",
          "Removals announced six months ahead with Deprecation and Sunset headers",
          "Free plan and a 14-day trial with 30 API credits, no card",
          "Identical image URLs return a cached image without using another credit",
          "Terms guarantee 94 per cent annual availability; AI sub-processors named in the privacy policy"
        ],
        "weaknesses": [
          "One API key per user with full account access and no scopes; a new key needs an email to support",
          "Generation requests aren't idempotent, so a retry can spend a second credit",
          "No changelog, status page or dated release found",
          "The docs' Errors section is unedited template text",
          "Not in the official MCP registry, and plan prices are drawn by script"
        ],
        "agentNotes": [
          "Use `GET /templates` to find a template UID and its layer names before generating",
          "Check whether an image exists before retrying a timed-out `POST /designs/{UID}`; retries can be charged",
          "Treat 403 as a spent quota or expired trial and stop; wait for `Retry-After` only on 503",
          "Poll `GET /ai/generate/{jobUid}` about every 2 seconds and download the result, since the URL may expire",
          "Keep the API key out of image URLs; use signed or public links for embedding"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 43.2
          }
        ],
        "editorialScores": {
          "ergonomics": 45,
          "maintenance": 4,
          "payments": 30,
          "reliability": 42,
          "schema": 82,
          "security": 26,
          "transparency": 63
        },
        "provenanceScore": 63,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl https://api.dynapictures.com/workspaces -H \"Authorization: Bearer YOUR_API_KEY\"",
        "config": {
          "mcpServers": {
            "dynapictures": {
              "headers": {
                "Authorization": "Bearer YOUR_API_KEY"
              },
              "url": "https://mcp.dynapictures.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/design.templates",
        "tool": "https://letme.dev/dynapictures"
      },
      "area": "design-diagrams",
      "unitPrices": [
        {
          "item": "AI credit pack",
          "unit": "credit",
          "usd": 0.02,
          "note": "$20 for 1,000 AI credits, about 250 AI images; packs never expire"
        }
      ],
      "provenance": {
        "legalEntity": "DynaPictures GmbH",
        "domain": "dynapictures.com",
        "domainRegistered": "2021-03-14",
        "endpointOnVendorDomain": true,
        "terms": "https://dynapictures.com/p/terms",
        "privacy": "https://dynapictures.com/p/privacy-policy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The terms (revision 2/2026) and privacy policy name DynaPictures GmbH, Zasiusstr. 6a, 79102 Freiburg im Breisgau, Germany. The terms apply to business customers only and guarantee 94 per cent annual availability.",
          "No clause on automated access to the website was found in the terms.",
          "dynapictures.com/robots.txt disallows only the /tools/r/ paths. api.dynapictures.com/robots.txt answers 401.",
          "RDAP gives dynapictures.com a registration date of 14 March 2021.",
          "/.well-known/security.txt returns 404. No status page or changelog found."
        ],
        "score": 63
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/dynapictures.json",
      "live": {
        "slug": "dynapictures",
        "probe": {
          "target": "https://api.dynapictures.com",
          "method": "get",
          "lastAt": "2026-11-07T19:22:04.384664691Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 356,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 221,
          "p95ms24h": 339,
          "samples24h": 210,
          "samples30d": 210,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 197,
              "ok": 197
            }
          ]
        },
        "securityTxt": {
          "url": "https://dynapictures.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:15.164343855Z"
        },
        "llmsTxt": {
          "url": "https://dynapictures.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:20.007030228Z"
        },
        "pages": [
          {
            "url": "https://dynapictures.com/p/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:09:06.124953966Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ef81a0377c7a"
          },
          {
            "url": "https://dynapictures.com/p/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:09:08.231434531Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6e15c5e4788d"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.dynapictures.com/mcp",
          "checkedAt": "2026-11-07T01:43:58.466398541Z",
          "status": "error",
          "note": "Post \"https://mcp.dynapictures.com/mcp\": dial tcp: lookup mcp.dynapictures.com on 192.168.1.1:53: no such host",
          "changedAt": "2026-11-07T01:43:58.466398541Z"
        },
        "updatedAt": "2026-11-07T19:22:04.384664691Z"
      }
    },
    "answer": "Templated API + MCP scores 58.8 (C) on agent readiness against DynaPictures's 43.2 (E), and leads in 6 of 7 scored categories. DynaPictures leads on schema \u0026 documentation.",
    "b": {
      "slug": "templated",
      "name": "Templated API + MCP",
      "vendor": "Templated",
      "vendorUrl": "https://templated.io",
      "kind": "http-api",
      "category": "design-assets",
      "summary": "Template rendering to JPG, PNG, WebP, multi-page PDF and MP4 (up to 90 seconds at 60 fps) through one POST /v1/render endpoint, plus template, folder, upload and font management.",
      "url": "https://www.anchorterminal.com/tools/templated",
      "markdownUrl": "https://www.anchorterminal.com/tools/templated.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/templated.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/templated.json",
      "dns": "templated.grade.anchorterminal.com",
      "repo": "https://github.com/templated-io/mcp-server-templated",
      "license": "MIT",
      "transports": [
        "http",
        "streamable-http",
        "stdio"
      ],
      "remoteUrl": "https://api.templated.io/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "mcp-server-templated"
        }
      ],
      "auth": "mixed",
      "authNotes": "Bearer API key from the dashboard, with full account access. The hosted MCP signs in with OAuth, or takes ?apiKey= in the URL for automations. The local MCP reads TEMPLATED_API_KEY. The MCP can be scoped by folder or external ID to isolate customers.",
      "pricing": "paid",
      "pricingNotes": "Free trial with 50 credits and no card. Starter $39 a month or $29 billed yearly (1,000 credits, 60 requests a minute), Scale $99 or $79 (5,000 credits, 150 a minute), Enterprise $229 or $179 (25,000 credits, 300 a minute), custom from $500 a month. 1 image or 1 PDF page is 1 credit. Video is width x height x fps x seconds / 50,000,000, so 10 seconds of 1080p at 30 fps is 13 credits (https://templated.io/pricing/).",
      "priceSummary": "$39 / mo",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "Subscription credits only. No x402 in the docs or llms-full.txt (checked 2026-09-30).",
        "endpoints": []
      },
      "toolCount": 25,
      "popularity": {
        "githubStars": 3,
        "npmWeekly": 62,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://templated.io/docs/",
      "llmsTxt": "https://templated.io/llms.txt",
      "registryName": "io.github.templated-io/mcp-server-templated",
      "capabilities": [
        "design.templates",
        "design.render",
        "video.render"
      ],
      "tags": [
        "hosted",
        "mcp",
        "llms-txt",
        "no-card",
        "async-jobs",
        "webhooks"
      ],
      "lastRelease": "2026-10-08",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 58.8,
        "grade": "C",
        "agentReady": false,
        "rank": 730,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 5,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 70,
          "maintenance": 80,
          "payments": 35,
          "reliability": 65,
          "schema": 74,
          "security": 42,
          "transparency": 76
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-02"
        },
        "negative": -3,
        "negativeNotes": [
          "-3, 8 October 2026. mcp-server-templated 1.9.0, a minor release with no advance notice found, rejects layer names a template doesn't have before rendering, and `layers` sent with `pages` (the API docs say `layers` is then ignored), so create_render calls that rendered and were charged on 1.8.0 now fail. The tag's commit message is the only record (https://github.com/templated-io/mcp-server-templated/commit/7b50f47bcab07677e2566317e85c490df61fec54)"
        ],
        "verdict": "Templated's MIT-licensed MCP server has 25 tools, each annotated with readOnlyHint and destructiveHint, and can be fenced to one folder or customer. The REST key has full account access, the MCP docs still document it as ?apiKey= in the URL, and MCP 1.9.0 began rejecting calls 1.8.0 accepted with no notice.",
        "bestFor": "Agents and SaaS builders who render images, PDFs and short MP4s from templates and want a well-behaved MCP server they can fence per customer.",
        "strengths": [
          "MIT-licensed MCP server with 25 tools, every one annotated with readOnlyHint and destructiveHint",
          "Listed in the official MCP registry, with 1.9.0 published from CI by GitHub OIDC on 8 October 2026",
          "llms.txt, llms-full.txt and a Markdown version of every page, including the price list with rate limits per plan",
          "MCP 1.9.0 turns API errors into next steps, such as which list tool to call for a missing ID",
          "MCP can be locked to one folder or external ID for customer-facing use"
        ],
        "weaknesses": [
          "One API key with full account access, and the MCP docs document it as ?apiKey= in the URL",
          "No OpenAPI, and no 429 handling in the API docs. Error tables cover five endpoints, not create render",
          "No official SDKs, only code samples",
          "MCP 1.9.0 began rejecting renders with unknown layer names, or with both `layers` and `pages`, with no advance notice",
          "AI functions send content to Gemini, OpenAI, Anthropic and DeepSeek per the privacy policy"
        ],
        "agentNotes": [
          "Call get_template_layers before create_render. MCP 1.9.0 rejects layer names the template doesn't have",
          "Set async true with a webhook_url for MP4, zip or batch renders, since zip without a webhook returns 400",
          "Video credits are width x height x fps x seconds / 50,000,000, so 10 seconds of 1080p at 30 fps costs 13",
          "Pass folderId or externalId on the MCP URL when one server serves several customers",
          "On a 429 wait for Retry-After when present and send batch calls one at a time. The API docs give no retry guidance"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 4,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 58.8
          }
        ],
        "editorialScores": {
          "ergonomics": 70,
          "maintenance": 80,
          "payments": 35,
          "reliability": 65,
          "schema": 74,
          "security": 42,
          "transparency": 61
        },
        "provenanceScore": 91,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-02",
            "maintenance": "2026-11-02",
            "payments": "2026-11-02",
            "reliability": "2026-11-02",
            "schema": "2026-11-02",
            "security": "2026-11-02",
            "transparency": "2026-11-02"
          },
          "last": "2026-11-02",
          "lastMoved": "2026-11-02",
          "oldest": "2026-11-02",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl https://api.templated.io/v1/account -H \"Authorization: Bearer $TEMPLATED_API_KEY\"",
        "claudeCode": "claude mcp add --transport http templated https://mcp.templated.io/mcp",
        "config": {
          "mcpServers": {
            "templated": {
              "args": [
                "mcp-server-templated"
              ],
              "command": "npx",
              "env": {
                "TEMPLATED_API_KEY": "${TEMPLATED_API_KEY}"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/design.templates",
        "tool": "https://letme.dev/templated"
      },
      "area": "design-diagrams",
      "unitPrices": [
        {
          "item": "Starter",
          "unit": "month",
          "usd": 39,
          "note": "1,000 credits, $29 a month billed yearly"
        },
        {
          "item": "Scale",
          "unit": "month",
          "usd": 99,
          "note": "5,000 credits, $79 a month billed yearly"
        },
        {
          "item": "Enterprise",
          "unit": "month",
          "usd": 229,
          "note": "25,000 credits, $179 a month billed yearly"
        }
      ],
      "provenance": {
        "legalEntity": "Fields Apps LTDA",
        "domain": "templated.io",
        "domainRegistered": "2023-11-13",
        "endpointOnVendorDomain": true,
        "terms": "https://templated.io/terms/",
        "privacy": "https://templated.io/privacy/",
        "statusPage": "https://status.templated.io",
        "changelog": "https://templated.io/changelog/",
        "securityTxt": "valid",
        "checked": "2026-11-02",
        "score": 91
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/templated.json",
      "live": {
        "slug": "templated",
        "probe": {
          "target": "https://api.templated.io/v1",
          "method": "get",
          "lastAt": "2026-11-07T19:22:38.85768912Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 477,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 397,
          "p95ms24h": 518,
          "samples24h": 238,
          "samples30d": 7920,
          "days": [
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 197,
              "ok": 197
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.templated.io",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-07T04:48:51.829427572Z"
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "io.github.templated-io/mcp-server-templated",
            "version": "1.9.0",
            "seenAt": "2026-11-07T18:16:28.95801333Z"
          },
          {
            "registry": "npm",
            "name": "mcp-server-templated",
            "version": "1.9.0",
            "seenAt": "2026-11-07T00:10:43.303651038Z"
          }
        ],
        "githubStars": 3,
        "npmWeekly": 83,
        "securityTxt": {
          "url": "https://templated.io/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-10-08T00:00:00.000Z",
          "checkedAt": "2026-11-07T16:00:06.654551276Z"
        },
        "llmsTxt": {
          "url": "https://templated.io/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:34:06.909454564Z"
        },
        "domain": {
          "domain": "templated.io",
          "checkedAt": "2026-11-01T14:24:50.055557925Z"
        },
        "pages": [
          {
            "url": "https://feedback.templated.io/changelog",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-11-04T08:23:53.510667973Z",
            "changedAt": "2026-10-28T04:17:57.080186519Z",
            "fingerprint": "a4282626df2d"
          },
          {
            "url": "https://templated.io/changelog/",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-11-07T14:21:59.79321814Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "a4282626df2d"
          },
          {
            "url": "https://templated.io/pricing/",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-11-07T14:22:02.063812867Z",
            "changedAt": "2026-10-28T04:45:05.453657396Z",
            "fingerprint": "e4d8862f8143"
          },
          {
            "url": "https://templated.io/privacy/",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-11-07T14:22:04.092435491Z",
            "changedAt": "2026-10-28T04:45:07.749121998Z",
            "fingerprint": "954d5276433a"
          },
          {
            "url": "https://templated.io/terms/",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-11-07T14:22:06.108841922Z",
            "changedAt": "2026-10-28T04:45:09.80136904Z",
            "fingerprint": "ea54a342875f"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.templated.io/mcp",
          "checkedAt": "2026-11-07T01:48:35.379126483Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-11-07T01:48:35.379126483Z"
        },
        "github": {
          "repo": "templated-io/mcp-server-templated",
          "checkedAt": "2026-11-02T09:30:41.8990944Z",
          "stars": 3,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-14T19:46:16Z",
          "openIssues": 0,
          "openPRs": 0,
          "issuesOpened90d": 0,
          "issuesClosed90d": 0,
          "prsMerged90d": 0
        },
        "updatedAt": "2026-11-07T19:22:38.85768912Z"
      }
    },
    "edges": [
      {
        "by": 76,
        "category": "maintenance",
        "leads": "templated",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "No changelog, release notes or dated API change was found, and the MCP server card gives version 1.0.0 with no date (0). No dated changes since 8 August (0). Support by email and contact form, not tested (4 of 15). Not in the official MCP registry and no API SDKs (0). No public package or repository (0). 0 + 0 + 4 + 0 + 0 = 4.",
          "b": "mcp-server-templated v1.9.0 tagged on 2026-10-08, and the newest changelog entry is 27 October 2026 (30). Six MCP tags in the 90 days from 4 August (v1.4.0 and v1.4.1 on 5 August, v1.7.0 and v1.7.1 on 8 September, v1.8.0 on 6 October, v1.9.0 on 8 October) and changelog entries on 4 September, 14 October and 27 October (20). Dated public changelog and support by email. GitHub issue response wasn't checked (github.com refuses our requests) (10). Listed in the official MCP registry as io.github.templated-io/mcp-server-templated, with 1.9.0 published on 8 October by GitHub OIDC from CI (15). @modelcontextprotocol/sdk 1.32.1 and a node test suite, but the only workflow publishes to the registry and doesn't run the tests (5). 30 + 20 + 10 + 15 + 5 = 80."
        },
        "scores": {
          "a": 4,
          "b": 80
        }
      },
      {
        "by": 25,
        "category": "ergonomics",
        "leads": "templated",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "The MCP tool definitions weren't read (listing them needs a session), and llms.txt describes groups that include layer-by-layer design authoring, so the count is unknown. REST responses are small objects with image URLs (12 of 25). Template and generated-image listings, with no field selection documented (10 of 20). Errors are JSON with a `message` and documented statuses, without codes (12 of 20). Requests aren't idempotent, by the vendor's own note, though identical image URLs are served from cache without a credit (6 of 20). An Editor SDK for embedding the editor, and no API client SDKs (5 of 15). 12 + 10 + 12 + 6 + 5 = 45.",
          "b": "25 MCP tools (15), plus results passed through field allowlists, and MCP 1.9.0 prunes JSON results (get_template_layers about 78 per cent smaller by the release note) (3). Lists take page and limit, default 25 and at most 100 in the MCP, and the MCP can filter to one folder or external ID (17). The API docs give status tables on five endpoints. MCP 1.9.0 (8 October 2026) turns each status into an instruction, such as calling the list tool for a missing ID, reconnecting on 401 or waiting for Retry-After on 429, and rejects unknown layer names before rendering (12). Every tool carries readOnlyHint and destructiveHint, with deletes and template updates marked destructive. No idempotency key (15). Only `template` is required and renders are synchronous by default, but there are no official SDKs, only code samples in JavaScript, Python and PHP (8). 18 + 17 + 12 + 15 + 8 = 70."
        },
        "scores": {
          "a": 45,
          "b": 70
        }
      },
      {
        "by": 23,
        "category": "reliability",
        "leads": "templated",
        "name": "Reliability",
        "reasons": {
          "a": "Hosted lines. No status page found in the docs, llms.txt or footer (0). No readable incident history (5). The monthly image quota is reported in RateLimit headers on generation, but no per-second or per-minute limit is published (5 of 15). The agent skill gives a status table with what to do for each, GET /links sends Retry-After on 503, and the docs warn that generation isn't idempotent and to check before retrying a 504 (12 of 15). The terms guarantee 94 per cent annual availability, a low figure but a published SLA (10). Nothing is labelled beta (10). 0 + 5 + 5 + 12 + 10 + 10 = 42.",
          "b": "Better Stack status page with API, App and Website components over 30, 60 and 90 days (20). The incidents page lists no incident for September, October or November 2026 and the RSS feed holds no entry, so the page has never posted one. This run scores a page that has never posted an incident 20, not the 30 of a clean record, and the page's own figure for the API is 100 per cent over 90 days (20). Rate limits per plan in the Markdown price list, 60, 150 and 300 requests a minute (15). No 429 behaviour, Retry-After or retry advice in the API docs or llms-full.txt. MCP 1.9.0 tells the model to wait and retry after a 429, which isn't API documentation (0). The pricing page lists \"SLA \u0026 dedicated support\" on the custom plan from $500 a month, with no SLA document or figure found (0). The render API is GA. Video launched on 7 January 2026 as \"now live\" (10). 20 + 20 + 15 + 0 + 0 + 10 = 65."
        },
        "scores": {
          "a": 42,
          "b": 65
        }
      },
      {
        "by": 16,
        "category": "security",
        "leads": "templated",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "One API key per user with the user's full access, not limited to workspaces or actions; a new key is requested by email to support, with no rotation in the account (10 of 30). No read-only mode, and the MCP server can author and change designs (3 of 20). Tools return the account's own templates and renders; image layers accept outside URLs (10 of 15). A list of generated images, with no audit log documented (3 of 15). No security.txt, disclosure policy, bug bounty or certification found (0). 10 + 3 + 10 + 3 + 0 = 26.",
          "b": "The REST key has full account access by the docs' own words, and the privacy policy says it can be regenerated. The hosted MCP is an OAuth 2.1 resource server since MCP 1.6.0 (18). The MCP setup guide still documents ?apiKey= in the server URL for automations, less 10 (8). Folder and external ID scoping is enforced server side, and destructive tools are annotated so clients can ask first. No read-only key (12). Tool results pass through allowlists, and the docs describe server-side scoping as a guard against prompt injection (12). No audit log or per-call log found for the customer beyond the render list (3). A valid security.txt since 28 October 2026 (Last-Modified), sending reports to support@templated.io and expiring 8 October 2027, and 2FA since September 2026. No certification or bug bounty found (7, as a valid security.txt to a support address with nothing else). 8 + 12 + 12 + 3 + 7 = 42."
        },
        "scores": {
          "a": 26,
          "b": 42
        }
      },
      {
        "by": 13,
        "category": "transparency",
        "leads": "templated",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service under terms (revision 2/2026) from DynaPictures GmbH in Freiburg, for business customers (15). The privacy policy names the controller, keeps generated images as long as needed or until deleted, gives plan image retention (3 months on Lite), and says the named AI providers don't train on API inputs under their API terms; other periods follow bookkeeping law (20 of 30). The OpenAPI file commits to six months' notice before removing an endpoint or field, with Deprecation and Sunset headers (16 of 20). AI sub-processors named with addresses (OpenAI, Google, Black Forest Labs, Replicate) and FastSpring for payments, while hosting providers aren't named (12 of 20). 15 + 20 + 16 + 12 = 63.",
          "b": "MCP server MIT with a `LICENSE` file. The rendering service is closed under published terms (18). Privacy policy updated 18 October 2026 with retention stated per data type (until you delete, files purged within 90 days of deletion, logs up to 90 days, billing records five years) and a DPA at templated.io/dpa, though it doesn't say whether customer content trains models (25). No deprecation policy or dated deprecation notices found (0). Subprocessors named by purpose, including Gemini, OpenAI, Anthropic and DeepSeek for AI functions, Photoroom for background removal, PostHog and Plausible for analytics and Stripe, Creem and Spedy for payments (18). 18 + 25 + 0 + 18 = 61."
        },
        "scores": {
          "a": 63,
          "b": 76
        }
      },
      {
        "by": 8,
        "category": "schema",
        "leads": "dynapictures",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "OpenAPI 3.1 at dynapictures.com/openapi.json with 20 paths (25). llms.txt, auth.md and an agent skill in Markdown (10). llms.txt says when to use the product and when it's a poor fit, and the skill gives call order for each job (17 of 20). Enums for formats and options, with layer overrides keyed by layer name (12 of 15). Request examples throughout and a status table in the skill, but the API reference's Errors section is unedited Slate template text about kittens (9 of 15). No URL version, additive changes, removals announced six months ahead with Deprecation and Sunset headers, and no changelog (9 of 15). 25 + 10 + 17 + 12 + 9 + 9 = 82.",
          "b": "No OpenAPI. All 25 MCP tools carry typed JSON Schema inputs, and server.json is published to the MCP registry, so partial credit (18). llms.txt, llms-small.txt, llms-full.txt, pricing.md and a Markdown version of every page (10). Some MCP descriptions guide the model well (update_template explains pages versus layers, create_render names get_template_layers first), others are one line (12). Format and layer type enums and a required template field, and MCP 1.9.0 caps list limits at 100 in the schema, but size, scale and fps limits sit in prose rather than min and max, and `layers` is an open object (10). Request and response examples per endpoint. Error tables with status codes appear on five endpoints (font, render, template and upload deletes and template update), none on create render (9). Versioned /v1 path, a dated changelog now at templated.io/changelog/ and tagged MCP releases (15). 18 + 10 + 12 + 10 + 9 + 15 = 74."
        },
        "scores": {
          "a": 82,
          "b": 74
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "DynaPictures GmbH",
        "b": "Templated",
        "name": "Vendor"
      },
      {
        "a": "https://api.dynapictures.com",
        "b": "https://api.templated.io/v1",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP, Streamable HTTP, stdio",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Closed service under the DynaPictures terms of use (revision 2/2026)",
        "b": "MIT",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "25",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "not listed",
        "b": "io.github.templated-io/mcp-server-templated",
        "name": "MCP registry"
      },
      {
        "a": "none",
        "b": "2026-10-08",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2026-01-10",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2026-09-08",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "none",
        "b": "3 stars, 62 npm/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "4/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Templated API + MCP scores 58.8 (C) on agent readiness against DynaPictures's 43.2 (E), and leads in 6 of 7 scored categories. DynaPictures leads on schema \u0026 documentation.",
        "question": "Which is better for AI agents, DynaPictures or Templated API + MCP?"
      },
      {
        "answer": "DynaPictures needs an API key. Templated API + MCP takes an API key or an OAuth sign-in.",
        "question": "Do DynaPictures and Templated API + MCP need an API key?"
      },
      {
        "answer": "Yes. DynaPictures has a hosted endpoint at https://api.dynapictures.com and Templated API + MCP at https://api.templated.io/v1.",
        "question": "Can an agent call DynaPictures and Templated API + MCP without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 82 against 74"
        ],
        "also": [
          "No incidents deducted, where Templated API + MCP loses 3 points for them"
        ],
        "goodFor": "Personalised images and PDFs per record, image URLs in emails and pages, and email countdown timers, for marketing teams in the EU.",
        "slug": "dynapictures",
        "watchFor": "One API key per user with full account access and no scopes; a new key needs an email to support"
      },
      {
        "aheadOn": [
          "Reliability, 65 against 42",
          "Agent ergonomics, 70 against 45",
          "Security \u0026 auth, 42 against 26",
          "Payments \u0026 pricing, 35 against 30",
          "Maintenance \u0026 community, 80 against 4",
          "Transparency \u0026 trust, 76 against 63"
        ],
        "also": [
          "Runs on your own machine"
        ],
        "goodFor": "Agents and SaaS builders who render images, PDFs and short MP4s from templates and want a well-behaved MCP server they can fence per customer.",
        "slug": "templated",
        "watchFor": "One API key with full account access, and the MCP docs document it as ?apiKey= in the URL"
      }
    ],
    "history": {
      "dynapictures": null,
      "templated": [
        {
          "causes": [
            "security",
            "product",
            "evidence",
            "correction",
            "event"
          ],
          "date": "2026-11-02",
          "delta": -2.5,
          "from": 61.3,
          "fromGrade": "C",
          "to": 58.8,
          "toGrade": "C"
        },
        {
          "causes": [
            "evidence"
          ],
          "date": "2026-10-28",
          "delta": 0.1,
          "from": 61.2,
          "fromGrade": "C",
          "to": 61.3,
          "toGrade": "C"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-08",
          "delta": -0.1,
          "from": 61.3,
          "fromGrade": "C",
          "to": 61.2,
          "toGrade": "C"
        }
      ]
    },
    "job": {
      "capability": "design.templates",
      "name": "Design templates"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-dynapictures.json",
        "title": "Adobe Photoshop API vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-dynapictures"
      },
      {
        "json": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-templated.json",
        "title": "Adobe Photoshop API vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-dynapictures.json",
        "title": "APITemplate.io vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-dynapictures"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-templated.json",
        "title": "APITemplate.io vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bannerbear-vs-dynapictures.json",
        "title": "Bannerbear API + MCP vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-dynapictures"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bannerbear-vs-templated.json",
        "title": "Bannerbear API + MCP vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/canva-vs-dynapictures.json",
        "title": "Canva REST APIs + MCP vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/canva-vs-dynapictures"
      },
      {
        "json": "https://www.anchorterminal.com/compare/canva-vs-templated.json",
        "title": "Canva REST APIs + MCP vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/canva-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/contentdrips-vs-dynapictures.json",
        "title": "Contentdrips API and MCP vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/contentdrips-vs-dynapictures"
      },
      {
        "json": "https://www.anchorterminal.com/compare/contentdrips-vs-templated.json",
        "title": "Contentdrips API and MCP vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/contentdrips-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/creatomate-vs-dynapictures.json",
        "title": "Creatomate vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/creatomate-vs-dynapictures"
      },
      {
        "json": "https://www.anchorterminal.com/compare/creatomate-vs-templated.json",
        "title": "Creatomate vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/creatomate-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-layerre.json",
        "title": "DynaPictures vs Layerre",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-layerre"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-photoroom.json",
        "title": "DynaPictures vs Photoroom API",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-photoroom"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-pictify.json",
        "title": "DynaPictures vs Pictify",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-pictify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-pixelixe.json",
        "title": "DynaPictures vs Pixelixe",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-pixelixe"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-placid.json",
        "title": "DynaPictures vs Placid API + MCP",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-placid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-postnitro.json",
        "title": "DynaPictures vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-robolly.json",
        "title": "DynaPictures vs Robolly",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-robolly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-shotstack.json",
        "title": "DynaPictures vs Shotstack",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-shotstack"
      },
      {
        "json": "https://www.anchorterminal.com/compare/layerre-vs-templated.json",
        "title": "Layerre vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/layerre-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/photoroom-vs-templated.json",
        "title": "Photoroom API vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/photoroom-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pixelixe-vs-templated.json",
        "title": "Pixelixe vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/pixelixe-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/placid-vs-templated.json",
        "title": "Placid API + MCP vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/placid-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/postnitro-vs-templated.json",
        "title": "PostNitro vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/postnitro-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/robolly-vs-templated.json",
        "title": "Robolly vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/robolly-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/shotstack-vs-templated.json",
        "title": "Shotstack vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/shotstack-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-dynapictures.json",
        "title": "Abyssale vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-dynapictures"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-templated.json",
        "title": "Abyssale vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-osmo-cli.json",
        "title": "DynaPictures vs Osmo CLI",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-osmo-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/osmo-cli-vs-templated.json",
        "title": "Osmo CLI vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/osmo-cli-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pictify-vs-templated.json",
        "title": "Pictify vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/pictify-vs-templated"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 23,
        "dynapictures": 42,
        "edge": "templated",
        "key": "reliability",
        "name": "Reliability",
        "templated": 65,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 8,
        "dynapictures": 82,
        "edge": "dynapictures",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "templated": 74,
        "weight": 13
      },
      {
        "by": 25,
        "dynapictures": 45,
        "edge": "templated",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "templated": 70,
        "weight": 13
      },
      {
        "by": 16,
        "dynapictures": 26,
        "edge": "templated",
        "key": "security",
        "name": "Security \u0026 auth",
        "templated": 42,
        "weight": 14
      },
      {
        "by": 5,
        "dynapictures": 30,
        "edge": "templated",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "templated": 35,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 76,
        "dynapictures": 4,
        "edge": "templated",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "templated": 80,
        "weight": 7
      },
      {
        "by": 13,
        "dynapictures": 63,
        "edge": "templated",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "templated": 76,
        "weight": 7
      }
    ],
    "summary": "Templated API + MCP scores 58.8 (C) on agent readiness against DynaPictures's 43.2 (E), and leads in 6 of 7 scored categories. DynaPictures leads on schema \u0026 documentation. Both do design templates.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "dynapictures": "An OpenAPI 3.1 file, an agent skill and a six-month removal notice with Sunset headers make DynaPictures' template rendering easy to plan around, with a free plan and no-card trial. The single API key opens the whole account, requests aren't idempotent, and no changelog, status page or dated release was found.",
      "templated": "Templated's MIT-licensed MCP server has 25 tools, each annotated with readOnlyHint and destructiveHint, and can be fenced to one folder or customer. The REST key has full account access, the MCP docs still document it as ?apiKey= in the URL, and MCP 1.9.0 began rejecting calls 1.8.0 accepted with no notice."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/dynapictures-vs-templated",
    "json": "https://www.anchorterminal.com/compare/dynapictures-vs-templated.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/dynapictures-vs-templated.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/dynapictures-vs-templated.min.md"
  },
  "markdown": "Templated API + MCP scores 58.8 (C) on agent readiness against DynaPictures's 43.2 (E), and leads in 6 of 7 scored categories. DynaPictures leads on schema \u0026 documentation. Both do design templates.\n\n- DynaPictures: grade E, 43.2/100, rank #1257 of 1510. Markdown https://www.anchorterminal.com/tools/dynapictures.md · JSON https://www.anchorterminal.com/api/v1/tools/dynapictures.json\n- Templated API + MCP: grade C, 58.8/100, rank #730 of 1510. Markdown https://www.anchorterminal.com/tools/templated.md · JSON https://www.anchorterminal.com/api/v1/tools/templated.json\n- Best programmatic image and design asset APIs for AI agents: https://www.anchorterminal.com/best/design-assets/index.md\n- All 153 assets comparisons: https://www.anchorterminal.com/compare/design-assets/index.md\n\n## Which one, for what\n\n### DynaPictures (E)\n\nGood for: Personalised images and PDFs per record, image URLs in emails and pages, and email countdown timers, for marketing teams in the EU.\n\nAhead on:\n- Schema \u0026 documentation, 82 against 74\n\nAlso in its favour:\n- No incidents deducted, where Templated API + MCP loses 3 points for them\n\nWatch for: One API key per user with full account access and no scopes; a new key needs an email to support\n\n### Templated API + MCP (C)\n\nGood for: Agents and SaaS builders who render images, PDFs and short MP4s from templates and want a well-behaved MCP server they can fence per customer.\n\nAhead on:\n- Reliability, 65 against 42\n- Agent ergonomics, 70 against 45\n- Security \u0026 auth, 42 against 26\n- Payments \u0026 pricing, 35 against 30\n- Maintenance \u0026 community, 80 against 4\n- Transparency \u0026 trust, 76 against 63\n\nAlso in its favour:\n- Runs on your own machine\n\nWatch for: One API key with full account access, and the MCP docs document it as ?apiKey= in the URL\n\n\n## Why the edge\n\n### Maintenance \u0026 community: Templated API + MCP +76\n\n- DynaPictures (4): No changelog, release notes or dated API change was found, and the MCP server card gives version 1.0.0 with no date (0). No dated changes since 8 August (0). Support by email and contact form, not tested (4 of 15). Not in the official MCP registry and no API SDKs (0). No public package or repository (0). 0 + 0 + 4 + 0 + 0 = 4.\n- Templated API + MCP (80): mcp-server-templated v1.9.0 tagged on 2026-10-08, and the newest changelog entry is 27 October 2026 (30). Six MCP tags in the 90 days from 4 August (v1.4.0 and v1.4.1 on 5 August, v1.7.0 and v1.7.1 on 8 September, v1.8.0 on 6 October, v1.9.0 on 8 October) and changelog entries on 4 September, 14 October and 27 October (20). Dated public changelog and support by email. GitHub issue response wasn't checked (github.com refuses our requests) (10). Listed in the official MCP registry as io.github.templated-io/mcp-server-templated, with 1.9.0 published on 8 October by GitHub OIDC from CI (15). @modelcontextprotocol/sdk 1.32.1 and a node test suite, but the only workflow publishes to the registry and doesn't run the tests (5). 30 + 20 + 10 + 15 + 5 = 80.\n\n### Agent ergonomics: Templated API + MCP +25\n\n- DynaPictures (45): The MCP tool definitions weren't read (listing them needs a session), and llms.txt describes groups that include layer-by-layer design authoring, so the count is unknown. REST responses are small objects with image URLs (12 of 25). Template and generated-image listings, with no field selection documented (10 of 20). Errors are JSON with a `message` and documented statuses, without codes (12 of 20). Requests aren't idempotent, by the vendor's own note, though identical image URLs are served from cache without a credit (6 of 20). An Editor SDK for embedding the editor, and no API client SDKs (5 of 15). 12 + 10 + 12 + 6 + 5 = 45.\n- Templated API + MCP (70): 25 MCP tools (15), plus results passed through field allowlists, and MCP 1.9.0 prunes JSON results (get_template_layers about 78 per cent smaller by the release note) (3). Lists take page and limit, default 25 and at most 100 in the MCP, and the MCP can filter to one folder or external ID (17). The API docs give status tables on five endpoints. MCP 1.9.0 (8 October 2026) turns each status into an instruction, such as calling the list tool for a missing ID, reconnecting on 401 or waiting for Retry-After on 429, and rejects unknown layer names before rendering (12). Every tool carries readOnlyHint and destructiveHint, with deletes and template updates marked destructive. No idempotency key (15). Only `template` is required and renders are synchronous by default, but there are no official SDKs, only code samples in JavaScript, Python and PHP (8). 18 + 17 + 12 + 15 + 8 = 70.\n\n### Reliability: Templated API + MCP +23\n\n- DynaPictures (42): Hosted lines. No status page found in the docs, llms.txt or footer (0). No readable incident history (5). The monthly image quota is reported in RateLimit headers on generation, but no per-second or per-minute limit is published (5 of 15). The agent skill gives a status table with what to do for each, GET /links sends Retry-After on 503, and the docs warn that generation isn't idempotent and to check before retrying a 504 (12 of 15). The terms guarantee 94 per cent annual availability, a low figure but a published SLA (10). Nothing is labelled beta (10). 0 + 5 + 5 + 12 + 10 + 10 = 42.\n- Templated API + MCP (65): Better Stack status page with API, App and Website components over 30, 60 and 90 days (20). The incidents page lists no incident for September, October or November 2026 and the RSS feed holds no entry, so the page has never posted one. This run scores a page that has never posted an incident 20, not the 30 of a clean record, and the page's own figure for the API is 100 per cent over 90 days (20). Rate limits per plan in the Markdown price list, 60, 150 and 300 requests a minute (15). No 429 behaviour, Retry-After or retry advice in the API docs or llms-full.txt. MCP 1.9.0 tells the model to wait and retry after a 429, which isn't API documentation (0). The pricing page lists \"SLA \u0026 dedicated support\" on the custom plan from $500 a month, with no SLA document or figure found (0). The render API is GA. Video launched on 7 January 2026 as \"now live\" (10). 20 + 20 + 15 + 0 + 0 + 10 = 65.\n\n### Security \u0026 auth: Templated API + MCP +16\n\n- DynaPictures (26): One API key per user with the user's full access, not limited to workspaces or actions; a new key is requested by email to support, with no rotation in the account (10 of 30). No read-only mode, and the MCP server can author and change designs (3 of 20). Tools return the account's own templates and renders; image layers accept outside URLs (10 of 15). A list of generated images, with no audit log documented (3 of 15). No security.txt, disclosure policy, bug bounty or certification found (0). 10 + 3 + 10 + 3 + 0 = 26.\n- Templated API + MCP (42): The REST key has full account access by the docs' own words, and the privacy policy says it can be regenerated. The hosted MCP is an OAuth 2.1 resource server since MCP 1.6.0 (18). The MCP setup guide still documents ?apiKey= in the server URL for automations, less 10 (8). Folder and external ID scoping is enforced server side, and destructive tools are annotated so clients can ask first. No read-only key (12). Tool results pass through allowlists, and the docs describe server-side scoping as a guard against prompt injection (12). No audit log or per-call log found for the customer beyond the render list (3). A valid security.txt since 28 October 2026 (Last-Modified), sending reports to support@templated.io and expiring 8 October 2027, and 2FA since September 2026. No certification or bug bounty found (7, as a valid security.txt to a support address with nothing else). 8 + 12 + 12 + 3 + 7 = 42.\n\n### Transparency \u0026 trust: Templated API + MCP +13\n\n- DynaPictures (63): Closed service under terms (revision 2/2026) from DynaPictures GmbH in Freiburg, for business customers (15). The privacy policy names the controller, keeps generated images as long as needed or until deleted, gives plan image retention (3 months on Lite), and says the named AI providers don't train on API inputs under their API terms; other periods follow bookkeeping law (20 of 30). The OpenAPI file commits to six months' notice before removing an endpoint or field, with Deprecation and Sunset headers (16 of 20). AI sub-processors named with addresses (OpenAI, Google, Black Forest Labs, Replicate) and FastSpring for payments, while hosting providers aren't named (12 of 20). 15 + 20 + 16 + 12 = 63.\n- Templated API + MCP (76): MCP server MIT with a `LICENSE` file. The rendering service is closed under published terms (18). Privacy policy updated 18 October 2026 with retention stated per data type (until you delete, files purged within 90 days of deletion, logs up to 90 days, billing records five years) and a DPA at templated.io/dpa, though it doesn't say whether customer content trains models (25). No deprecation policy or dated deprecation notices found (0). Subprocessors named by purpose, including Gemini, OpenAI, Anthropic and DeepSeek for AI functions, Photoroom for background removal, PostHog and Plausible for analytics and Stripe, Creem and Spedy for payments (18). 18 + 25 + 0 + 18 = 61.\n\n### Schema \u0026 documentation: DynaPictures +8\n\n- DynaPictures (82): OpenAPI 3.1 at dynapictures.com/openapi.json with 20 paths (25). llms.txt, auth.md and an agent skill in Markdown (10). llms.txt says when to use the product and when it's a poor fit, and the skill gives call order for each job (17 of 20). Enums for formats and options, with layer overrides keyed by layer name (12 of 15). Request examples throughout and a status table in the skill, but the API reference's Errors section is unedited Slate template text about kittens (9 of 15). No URL version, additive changes, removals announced six months ahead with Deprecation and Sunset headers, and no changelog (9 of 15). 25 + 10 + 17 + 12 + 9 + 9 = 82.\n- Templated API + MCP (74): No OpenAPI. All 25 MCP tools carry typed JSON Schema inputs, and server.json is published to the MCP registry, so partial credit (18). llms.txt, llms-small.txt, llms-full.txt, pricing.md and a Markdown version of every page (10). Some MCP descriptions guide the model well (update_template explains pages versus layers, create_render names get_template_layers first), others are one line (12). Format and layer type enums and a required template field, and MCP 1.9.0 caps list limits at 100 in the schema, but size, scale and fps limits sit in prose rather than min and max, and `layers` is an open object (10). Request and response examples per endpoint. Error tables with status codes appear on five endpoints (font, render, template and upload deletes and template update), none on create render (9). Versioned /v1 path, a dated changelog now at templated.io/changelog/ and tagged MCP releases (15). 18 + 10 + 12 + 10 + 9 + 15 = 74.\n\n## Score by category\n\n| Category | Weight | DynaPictures | Templated API + MCP | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 42 | 65 | Templated API + MCP +23 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 82 | 74 | DynaPictures +8 |\n| Agent ergonomics | 13% (16.2 this run) | 45 | 70 | Templated API + MCP +25 |\n| Security \u0026 auth | 14% (17.5 this run) | 26 | 42 | Templated API + MCP +16 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 35 | Templated API + MCP +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 4 | 80 | Templated API + MCP +76 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 63 | 76 | Templated API + MCP +13 |\n| Negative events | ≤15 | 0 | -3 | |\n| **Total** | | **43.2 · E** | **58.8 · C** | |\n\n## Facts side by side\n\n| Fact | DynaPictures | Templated API + MCP |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | DynaPictures GmbH | Templated |\n| Hosted endpoint | `https://api.dynapictures.com` | `https://api.templated.io/v1` |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP, stdio |\n| Auth | API key | OAuth or key |\n| Pricing | Freemium | Paid |\n| x402 | no | no |\n| Licence | Closed service under the DynaPictures terms of use (revision 2/2026) | MIT |\n| Tools exposed | none | 25 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| MCP registry | not listed | `io.github.templated-io/mcp-server-templated` |\n| Last release | none | 2026-10-08 |\n| Terms last updated | no date given | 2026-01-10 |\n| Privacy policy last updated | no date given | 2026-09-08 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | none | 3 stars, 62 npm/wk |\n| Agent reviews | none | 4/5 (2) |\n\n## How the scores have moved\n\n### DynaPictures\n\nNo score change since it was listed.\n\n### Templated API + MCP\n\n- -2.5 on 2 November 2026: security, product, new evidence, correction, negative event\n- +0.1 on 28 October 2026: new evidence\n- -0.1 on 8 October 2026: checklist\n\n## Verdicts\n\n**DynaPictures.** An OpenAPI 3.1 file, an agent skill and a six-month removal notice with Sunset headers make DynaPictures' template rendering easy to plan around, with a free plan and no-card trial. The single API key opens the whole account, requests aren't idempotent, and no changelog, status page or dated release was found.\n\n**Templated API + MCP.** Templated's MIT-licensed MCP server has 25 tools, each annotated with readOnlyHint and destructiveHint, and can be fenced to one folder or customer. The REST key has full account access, the MCP docs still document it as ?apiKey= in the URL, and MCP 1.9.0 began rejecting calls 1.8.0 accepted with no notice.\n\n## Before you call either\n\n### DynaPictures\n\n1. Use `GET /templates` to find a template UID and its layer names before generating\n2. Check whether an image exists before retrying a timed-out `POST /designs/{UID}`; retries can be charged\n3. Treat 403 as a spent quota or expired trial and stop; wait for `Retry-After` only on 503\n4. Poll `GET /ai/generate/{jobUid}` about every 2 seconds and download the result, since the URL may expire\n5. Keep the API key out of image URLs; use signed or public links for embedding\n\n### Templated API + MCP\n\n1. Call get_template_layers before create_render. MCP 1.9.0 rejects layer names the template doesn't have\n2. Set async true with a webhook_url for MP4, zip or batch renders, since zip without a webhook returns 400\n3. Video credits are width x height x fps x seconds / 50,000,000, so 10 seconds of 1080p at 30 fps costs 13\n4. Pass folderId or externalId on the MCP URL when one server serves several customers\n5. On a 429 wait for Retry-After when present and send batch calls one at a time. The API docs give no retry guidance\n\n## Questions\n\n### Which is better for AI agents, DynaPictures or Templated API + MCP?\n\nTemplated API + MCP scores 58.8 (C) on agent readiness against DynaPictures's 43.2 (E), and leads in 6 of 7 scored categories. DynaPictures leads on schema \u0026 documentation.\n\n### Do DynaPictures and Templated API + MCP need an API key?\n\nDynaPictures needs an API key. Templated API + MCP takes an API key or an OAuth sign-in.\n\n### Can an agent call DynaPictures and Templated API + MCP without installing anything?\n\nYes. DynaPictures has a hosted endpoint at https://api.dynapictures.com and Templated API + MCP at https://api.templated.io/v1.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/dynapictures-vs-templated.json, and with the fewest tokens: https://www.anchorterminal.com/compare/dynapictures-vs-templated.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"dynapictures\", \"b\": \"templated\"}`. From a terminal: `anchor compare dynapictures templated`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/dynapictures.json and https://www.anchorterminal.com/api/v1/tools/templated.json\n\n## Other comparisons with DynaPictures or Templated API + MCP\n\n- [Adobe Photoshop API vs DynaPictures](https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-dynapictures.md)\n- [Adobe Photoshop API vs Templated API + MCP](https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-templated.md)\n- [APITemplate.io vs DynaPictures](https://www.anchorterminal.com/compare/apitemplate-io-vs-dynapictures.md)\n- [APITemplate.io vs Templated API + MCP](https://www.anchorterminal.com/compare/apitemplate-io-vs-templated.md)\n- [Bannerbear API + MCP vs DynaPictures](https://www.anchorterminal.com/compare/bannerbear-vs-dynapictures.md)\n- [Bannerbear API + MCP vs Templated API + MCP](https://www.anchorterminal.com/compare/bannerbear-vs-templated.md)\n- [Canva REST APIs + MCP vs DynaPictures](https://www.anchorterminal.com/compare/canva-vs-dynapictures.md)\n- [Canva REST APIs + MCP vs Templated API + MCP](https://www.anchorterminal.com/compare/canva-vs-templated.md)\n- [Contentdrips API and MCP vs DynaPictures](https://www.anchorterminal.com/compare/contentdrips-vs-dynapictures.md)\n- [Contentdrips API and MCP vs Templated API + MCP](https://www.anchorterminal.com/compare/contentdrips-vs-templated.md)\n- [Creatomate vs DynaPictures](https://www.anchorterminal.com/compare/creatomate-vs-dynapictures.md)\n- [Creatomate vs Templated API + MCP](https://www.anchorterminal.com/compare/creatomate-vs-templated.md)\n- [DynaPictures vs Layerre](https://www.anchorterminal.com/compare/dynapictures-vs-layerre.md)\n- [DynaPictures vs Photoroom API](https://www.anchorterminal.com/compare/dynapictures-vs-photoroom.md)\n- [DynaPictures vs Pictify](https://www.anchorterminal.com/compare/dynapictures-vs-pictify.md)\n- [DynaPictures vs Pixelixe](https://www.anchorterminal.com/compare/dynapictures-vs-pixelixe.md)\n- [DynaPictures vs Placid API + MCP](https://www.anchorterminal.com/compare/dynapictures-vs-placid.md)\n- [DynaPictures vs PostNitro](https://www.anchorterminal.com/compare/dynapictures-vs-postnitro.md)\n- [DynaPictures vs Robolly](https://www.anchorterminal.com/compare/dynapictures-vs-robolly.md)\n- [DynaPictures vs Shotstack](https://www.anchorterminal.com/compare/dynapictures-vs-shotstack.md)\n- [Layerre vs Templated API + MCP](https://www.anchorterminal.com/compare/layerre-vs-templated.md)\n- [Photoroom API vs Templated API + MCP](https://www.anchorterminal.com/compare/photoroom-vs-templated.md)\n- [Pixelixe vs Templated API + MCP](https://www.anchorterminal.com/compare/pixelixe-vs-templated.md)\n- [Placid API + MCP vs Templated API + MCP](https://www.anchorterminal.com/compare/placid-vs-templated.md)\n- [PostNitro vs Templated API + MCP](https://www.anchorterminal.com/compare/postnitro-vs-templated.md)\n- [Robolly vs Templated API + MCP](https://www.anchorterminal.com/compare/robolly-vs-templated.md)\n- [Shotstack vs Templated API + MCP](https://www.anchorterminal.com/compare/shotstack-vs-templated.md)\n- [Abyssale vs DynaPictures](https://www.anchorterminal.com/compare/abyssale-vs-dynapictures.md)\n- [Abyssale vs Templated API + MCP](https://www.anchorterminal.com/compare/abyssale-vs-templated.md)\n- [DynaPictures vs Osmo CLI](https://www.anchorterminal.com/compare/dynapictures-vs-osmo-cli.md)\n- [Osmo CLI vs Templated API + MCP](https://www.anchorterminal.com/compare/osmo-cli-vs-templated.md)\n- [Pictify vs Templated API + MCP](https://www.anchorterminal.com/compare/pictify-vs-templated.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "DynaPictures vs Templated API + MCP",
        "url": ""
      }
    ],
    "description": "Templated scores 58.8 (C) to DynaPictures's 43.2 (E) for design templates. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "DynaPictures E 43.2",
      "Templated API + MCP C 58.8",
      "scores"
    ],
    "h1": "DynaPictures vs Templated API + MCP",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/dynapictures-vs-templated",
    "published": "2026-10-01",
    "section": "tools",
    "title": "DynaPictures vs Templated for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/dynapictures-vs-templated"
  },
  "tokens": {
    "markdown": 5100,
    "slim": 2930
  },
  "version": 1
}
