{
  "data": {
    "category": {
      "area": "design-diagrams",
      "capabilities": [
        "design.templates",
        "design.render",
        "image.edit",
        "design.brand"
      ],
      "description": "APIs that fill templates and render images, social graphics, banners, PDFs and video from data, or edit images in bulk. Compared on template tooling, output formats, render speed, price per render and what the licence lets you publish.",
      "json": "https://www.anchorterminal.com/categories/design-assets.json",
      "name": "Programmatic asset production",
      "slug": "design-assets",
      "test": "",
      "title": "Programmatic image and design asset APIs",
      "toolCount": 5,
      "tools": [
        "canva",
        "templated",
        "bannerbear",
        "adobe-photoshop-api",
        "placid"
      ],
      "url": "https://www.anchorterminal.com/categories/design-assets"
    },
    "tools": [
      {
        "slug": "canva",
        "name": "Canva REST APIs + MCP",
        "vendor": "Canva",
        "vendorUrl": "https://www.canva.dev",
        "kind": "http-api",
        "category": "design-assets",
        "summary": "Canva's REST APIs and hosted MCP server connect applications and agents to its design platform.",
        "url": "https://www.anchorterminal.com/tools/canva",
        "markdownUrl": "https://www.anchorterminal.com/tools/canva.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/canva.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/canva.json",
        "transports": [
          "http",
          "streamable-http"
        ],
        "remoteUrl": "https://api.canva.com/rest/v1",
        "packages": [],
        "auth": "oauth",
        "authNotes": "OAuth 2.0 authorisation code flow with PKCE (S256) against https://www.canva.com/api/oauth/authorize, with scopes such as design:content, asset:read and brandtemplate:meta chosen per app in the Developer Portal. Every call runs as one Canva user, so there's no server-to-server key. The MCP server at mcp.canva.com also uses per-user OAuth. Integrators register a client in the Developer Portal or, for CIMD clients, through a waitlist.",
        "pricing": "byo-plan",
        "pricingNotes": "No separate API fee. What the API and MCP can do follows the user's Canva plan. Free covers design generation, editing, search, export, comments and asset upload. Pro, Business and Enterprise add autofill, brand templates, brand kits, resize and pro-quality export. Canva says usage limits for autofill will come later. Private apps need Enterprise (https://www.canva.com/pricing/).",
        "priceSummary": "Your plan",
        "where": "hosted",
        "x402": {
          "level": "no",
          "evidence": "Per-user OAuth on Canva plans. No x402 in the docs or OpenAPI description (checked 2026-09-30).",
          "endpoints": []
        },
        "toolCount": 33,
        "popularity": {
          "githubStars": null,
          "npmWeekly": null,
          "pypiWeekly": null,
          "asOf": "2026-09-30"
        },
        "docsUrl": "https://www.canva.dev/docs/apps/rest-apis/",
        "llmsTxt": "https://www.canva.dev/llms.txt",
        "openapi": "https://www.canva.dev/sources/connect/api/latest/api.yml",
        "registryName": "com.canva.mcp/mcp",
        "capabilities": [
          "design.templates",
          "design.render",
          "design.brand",
          "video.render"
        ],
        "tags": [
          "hosted",
          "closed-source",
          "mcp",
          "llms-txt",
          "openapi",
          "async-jobs",
          "webhooks"
        ],
        "lastRelease": "2026-10-01",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 64.6,
          "grade": "B",
          "agentReady": false,
          "rank": 178,
          "ranked": true,
          "rankOf": 452,
          "categoryRank": 1,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 59,
            "maintenance": 85,
            "payments": 30,
            "reliability": 64,
            "schema": 95,
            "security": 63,
            "transparency": 86
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-01"
          },
          "negative": -3,
          "negativeNotes": [
            "2026-09-18. The MP4 `quality` parameter on the GA export job API changed from a fixed output size to a target pixel count without a new API version, which the deprecation policy requires for breaking changes. Canva logged it the same day as a bug fix, so we deduct at the low end. https://www.canva.dev/docs/apps/rest-apis/changelog/"
          ],
          "verdict": "OpenAPI 3.0 with 59 described operations, per-user rate limits and a 78-value error code enum. No server-to-server key, so unattended batch rendering has to run under one user's OAuth grant.",
          "strengths": [
            "OpenAPI 3.0 with 59 described operations, per-user rate limits and a 78-value error code enum",
            "OAuth with PKCE and 18 read and write scopes, every action attributable to one user",
            "Written deprecation policy with at least 6 months' notice and a dated changelog updated on 1 October 2026",
            "Bugcrowd bug bounty, disclosure policy, SOC 2 Type 2 and ISO 27001",
            "Exports to PNG, JPG, GIF, PDF, PPTX, MP4 and HTML, and the result stays editable in Canva"
          ],
          "weaknesses": [
            "No server-to-server key, so unattended batch rendering has to run under one user's OAuth grant",
            "25 of 59 operations are preview and can change without a new version",
            "MP4 export quality changed meaning on 18 September 2026 without a new API version",
            "Content is used to train Canva's models by default unless the user opts out in settings",
            "No official SDK, and MCP edits need a start, operate and commit sequence"
          ],
          "agentNotes": [
            "Call the user capabilities endpoint before autofill, brand templates or resize, which need Pro or above",
            "Poll export, upload and autofill jobs with exponential backoff and download results within 24 hours",
            "Commit an MCP editing transaction after perform-editing-operations, or the changes don't land",
            "Expect license_required on export when a design holds premium elements",
            "Read `page_number`, not the deprecated `index`, from Get design pages"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 2,
          "avgRating": 3,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "B",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 64.6
            }
          ],
          "editorialScores": {
            "ergonomics": 59,
            "maintenance": 85,
            "payments": 30,
            "reliability": 64,
            "schema": 95,
            "security": 63,
            "transparency": 71
          },
          "provenanceScore": 100
        },
        "connect": {
          "http": "curl https://api.canva.com/rest/v1/users/me -H \"Authorization: Bearer $CANVA_ACCESS_TOKEN\"",
          "claudeCode": "claude mcp add --transport http canva https://mcp.canva.com/mcp"
        },
        "letme": {
          "capability": "https://letme.dev/design.templates",
          "tool": "https://letme.dev/canva"
        },
        "area": "design-diagrams",
        "provenance": {
          "legalEntity": "Canva Pty Ltd",
          "domain": "canva.com",
          "domainRegistered": "2001-05-05",
          "endpointOnVendorDomain": true,
          "terms": "https://www.canva.com/policies/terms-of-use/",
          "privacy": "https://www.canva.com/policies/privacy-policy/",
          "statusPage": "https://www.canvastatus.com",
          "changelog": "https://www.canva.dev/docs/apps/rest-apis/changelog/",
          "securityTxt": "valid",
          "checked": "2026-09-30",
          "notes": [
            "Developer docs live on canva.dev. The API is served from api.canva.com",
            "security.txt lists a bug bounty, disclosure policy and trust centre but has no Expires field"
          ],
          "score": 100
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/canva.json",
        "live": {
          "slug": "canva",
          "probe": {
            "target": "https://api.canva.com/rest/v1",
            "method": "get",
            "lastAt": "2026-10-05T00:15:21.259062614Z",
            "lastOk": true,
            "lastStatus": 404,
            "lastMs": 126,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 127,
            "p95ms24h": 161,
            "samples24h": 272,
            "samples30d": 1105,
            "days": [
              {
                "date": "2026-09-30",
                "probes": 35,
                "ok": 35
              },
              {
                "date": "2026-10-01",
                "probes": 276,
                "ok": 276
              },
              {
                "date": "2026-10-02",
                "probes": 248,
                "ok": 248
              },
              {
                "date": "2026-10-03",
                "probes": 271,
                "ok": 271
              },
              {
                "date": "2026-10-04",
                "probes": 272,
                "ok": 272
              },
              {
                "date": "2026-10-05",
                "probes": 3,
                "ok": 3
              }
            ]
          },
          "vendorStatus": {
            "page": "https://www.canvastatus.com",
            "indicator": "none",
            "summary": "All Systems Operational",
            "checkedAt": "2026-10-05T00:11:12.367772506Z"
          },
          "versions": [
            {
              "registry": "mcp-registry",
              "name": "com.canva.mcp/mcp",
              "version": "1.0.0",
              "seenAt": "2026-10-04T23:42:40.113054682Z"
            }
          ],
          "securityTxt": {
            "url": "https://canva.com/.well-known/security.txt",
            "state": "valid",
            "checkedAt": "2026-10-04T15:16:04.761109754Z"
          },
          "llmsTxt": {
            "url": "https://www.canva.dev/llms.txt",
            "ok": true,
            "status": 200,
            "checkedAt": "2026-10-04T15:17:22.897856038Z"
          },
          "domain": {
            "domain": "canva.com",
            "registered": "2001-05-05",
            "source": "https://rdap.verisign.com/com/v1/domain/canva.com",
            "checkedAt": "2026-10-04T13:10:37.911167719Z"
          },
          "pages": [
            {
              "url": "https://www.canva.dev/docs/apps/rest-apis/changelog/",
              "kind": "changelog",
              "status": 304,
              "checkedAt": "2026-10-04T15:49:40.55349044Z",
              "changedAt": "2026-10-02T15:25:50.734698394Z",
              "fingerprint": "771b5b7623d2"
            },
            {
              "url": "https://www.canva.dev/docs/apps/llms.txt",
              "kind": "deprecations",
              "status": 0,
              "checkedAt": "2026-10-04T15:49:40.382542155Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "blockedByRobots": true
            },
            {
              "url": "https://www.canva.com/pricing/",
              "kind": "pricing",
              "status": 200,
              "checkedAt": "2026-10-04T15:49:42.696160902Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "9fd21481e687"
            },
            {
              "url": "https://www.canva.com/policies/privacy-policy/",
              "kind": "privacy",
              "status": 200,
              "checkedAt": "2026-10-04T15:49:38.234700268Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "abf1e1d6b63a"
            },
            {
              "url": "https://www.canva.com/policies/terms-of-use/",
              "kind": "terms",
              "status": 200,
              "checkedAt": "2026-10-04T15:49:40.418148694Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "f758f70f01cb"
            }
          ],
          "updatedAt": "2026-10-05T00:15:21.259062614Z"
        }
      },
      {
        "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",
        "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-09-08",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 61.3,
          "grade": "C",
          "agentReady": false,
          "rank": 231,
          "ranked": true,
          "rankOf": 452,
          "categoryRank": 2,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 63,
            "maintenance": 80,
            "payments": 35,
            "reliability": 75,
            "schema": 72,
            "security": 38,
            "transparency": 72
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-01"
          },
          "negative": 0,
          "verdict": "MIT-licensed MCP server with 25 tools, every one annotated with readOnlyHint and destructiveHint. One API key with full account access, and the MCP docs offer it as ?apiKey= in the URL.",
          "strengths": [
            "MIT-licensed MCP server with 25 tools, every one annotated with readOnlyHint and destructiveHint",
            "Listed in the official MCP registry and published from CI by GitHub OIDC",
            "llms.txt, llms-full.txt and a Markdown price list with rate limits per plan",
            "Privacy policy dated 2026-09-08 with retention periods, named subprocessors and a DPA",
            "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 offer it as ?apiKey= in the URL",
            "No OpenAPI, and no error codes or 429 handling in the API docs",
            "No official SDKs, only code samples",
            "No security.txt, certification or bug bounty found",
            "AI tools send content to Gemini, OpenAI, Anthropic and DeepSeek per the privacy policy"
          ],
          "agentNotes": [
            "Call get_template_layers before create_render so the keys in `layers` match the template",
            "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",
            "Back off on your own schedule after a 429, since the docs give no retry guidance"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 2,
          "avgRating": 4,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "C",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 61.3
            }
          ],
          "editorialScores": {
            "ergonomics": 63,
            "maintenance": 80,
            "payments": 35,
            "reliability": 75,
            "schema": 72,
            "security": 38,
            "transparency": 61
          },
          "provenanceScore": 82
        },
        "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://feedback.templated.io/changelog",
          "securityTxt": "none",
          "checked": "2026-09-30",
          "score": 82
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/templated.json",
        "live": {
          "slug": "templated",
          "probe": {
            "target": "https://api.templated.io/v1",
            "method": "get",
            "lastAt": "2026-10-05T00:15:31.246299237Z",
            "lastOk": true,
            "lastStatus": 404,
            "lastMs": 373,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 382,
            "p95ms24h": 452,
            "samples24h": 272,
            "samples30d": 1105,
            "days": [
              {
                "date": "2026-09-30",
                "probes": 35,
                "ok": 35
              },
              {
                "date": "2026-10-01",
                "probes": 276,
                "ok": 276
              },
              {
                "date": "2026-10-02",
                "probes": 248,
                "ok": 248
              },
              {
                "date": "2026-10-03",
                "probes": 271,
                "ok": 271
              },
              {
                "date": "2026-10-04",
                "probes": 272,
                "ok": 272
              },
              {
                "date": "2026-10-05",
                "probes": 3,
                "ok": 3
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.templated.io",
            "indicator": "unknown",
            "summary": "no machine-readable status found",
            "checkedAt": "2026-10-04T21:40:30.852085784Z"
          },
          "versions": [
            {
              "registry": "mcp-registry",
              "name": "io.github.templated-io/mcp-server-templated",
              "version": "1.7.1",
              "seenAt": "2026-10-04T23:42:40.113054682Z"
            },
            {
              "registry": "npm",
              "name": "mcp-server-templated",
              "version": "1.7.1",
              "seenAt": "2026-10-04T16:41:36.130519933Z"
            }
          ],
          "githubStars": 3,
          "npmWeekly": 40,
          "securityTxt": {
            "url": "https://templated.io/.well-known/security.txt",
            "state": "none",
            "checkedAt": "2026-10-04T15:15:43.100914048Z"
          },
          "llmsTxt": {
            "url": "https://templated.io/llms.txt",
            "ok": true,
            "status": 200,
            "checkedAt": "2026-10-04T15:18:17.534308578Z"
          },
          "domain": {
            "domain": "templated.io",
            "checkedAt": "2026-10-04T13:04:14.08717318Z"
          },
          "pages": [
            {
              "url": "https://feedback.templated.io/changelog",
              "kind": "changelog",
              "status": 200,
              "checkedAt": "2026-10-04T15:44:40.99279728Z",
              "changedAt": "2026-10-02T15:21:02.760105293Z",
              "fingerprint": "902e981860d2"
            },
            {
              "url": "https://templated.io/pricing/",
              "kind": "pricing",
              "status": 304,
              "checkedAt": "2026-10-04T15:48:23.263709517Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "9d4e7ddcf0b5"
            },
            {
              "url": "https://templated.io/privacy/",
              "kind": "privacy",
              "status": 304,
              "checkedAt": "2026-10-04T15:48:25.522639629Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "f5ab53d6cdcd"
            },
            {
              "url": "https://templated.io/terms/",
              "kind": "terms",
              "status": 304,
              "checkedAt": "2026-10-04T15:48:27.527183736Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "c5a02c7e1ffa"
            }
          ],
          "updatedAt": "2026-10-05T00:15:31.246299237Z"
        }
      },
      {
        "slug": "bannerbear",
        "name": "Bannerbear API + MCP",
        "vendor": "Bannerbear",
        "vendorUrl": "https://www.bannerbear.com",
        "kind": "http-api",
        "category": "design-assets",
        "summary": "Template-based image, PDF and animation rendering, plus video tools and multi-step workflows, over a REST API (V5 since August 2026) and an official MCP server, hosted with OAuth or run locally with an API key.",
        "url": "https://www.anchorterminal.com/tools/bannerbear",
        "markdownUrl": "https://www.anchorterminal.com/tools/bannerbear.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/bannerbear.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/bannerbear.json",
        "transports": [
          "http",
          "streamable-http",
          "stdio"
        ],
        "remoteUrl": "https://api.bannerbear.com/v5",
        "packages": [
          {
            "registry": "npm",
            "name": "@bannerbear/mcp"
          },
          {
            "registry": "npm",
            "name": "bannerbear"
          },
          {
            "registry": "pypi",
            "name": "bannerbear"
          }
        ],
        "auth": "mixed",
        "authNotes": "Bearer API key for REST. V5 keys (bb_ak_v5_...) can be scoped per resource and action, such as images:write, and restricted to browser origins, and they don't work on V2 endpoints. The hosted MCP uses OAuth. The local MCP takes BANNERBEAR_API_KEY.",
        "pricing": "paid",
        "pricingNotes": "Free trial with 30 API credits and no card. Automate $49 a month (1,000 API credits, 200 AI credits), Scale from $149 a month (10,000 credits, up to 40,000), Enterprise from $299 a month (50,000 credits, up to 2,000,000). An image is 1 credit per format and scale step. Animations are 2 credits a second of output. AI layers and media tools cost extra credits (https://www.bannerbear.com/pricing/).",
        "priceSummary": "$49 / mo",
        "where": "both",
        "x402": {
          "level": "no",
          "evidence": "Subscription credits only. No x402 in the docs or OpenAPI schema (checked 2026-09-30).",
          "endpoints": []
        },
        "toolCount": 63,
        "popularity": {
          "githubStars": null,
          "npmWeekly": 1090,
          "pypiWeekly": 8,
          "asOf": "2026-09-30"
        },
        "docsUrl": "https://developers.bannerbear.com/v5/",
        "llmsTxt": "https://www.bannerbear.com/llms.txt",
        "openapi": "https://api.bannerbear.com/v5/openapi.json",
        "capabilities": [
          "design.templates",
          "design.render",
          "video.render",
          "image.edit"
        ],
        "tags": [
          "hosted",
          "closed-source",
          "mcp",
          "llms-txt",
          "openapi",
          "no-card",
          "async-jobs",
          "webhooks"
        ],
        "lastRelease": "2026-09-18",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 60.5,
          "grade": "C",
          "agentReady": false,
          "rank": 245,
          "ranked": true,
          "rankOf": 452,
          "categoryRank": 3,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 71,
            "maintenance": 77,
            "payments": 35,
            "reliability": 45,
            "schema": 83,
            "security": 57,
            "transparency": 61
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-01"
          },
          "negative": 0,
          "verdict": "Hosted MCP server with OAuth and tool groups chosen by URL path, 30 tools by default, 8 on /workflows, 63 on /all. Privacy policy and terms last updated on 29 June 2021, with no retention periods and two named third parties.",
          "strengths": [
            "Hosted MCP server with OAuth and tool groups chosen by URL path, 30 tools by default, 8 on /workflows, 63 on /all",
            "V5 keys scoped per resource and action, with browser origin allowlists, and the MCP drops tools a key can't call",
            "OpenAPI 3.1 schema for V5 and a dated changelog with four entries between 31 July and 18 September 2026",
            "Official SDKs for Ruby, Node, Python and PHP",
            "Over-quota requests are refused with a 402 rather than billed, and failed tool jobs aren't charged since 9 September 2026"
          ],
          "weaknesses": [
            "Privacy policy and terms last updated on 29 June 2021, with no retention periods and two named third parties",
            "No security.txt, no security page and no certification or bug bounty found",
            "No Retry-After, idempotency key or MCP tool annotations, and five MCP tools delete permanently without confirmation",
            "Status page renders only with JavaScript and has no readable incident history",
            "No free plan. The trial is 30 credits, and image credits multiply by format and scale"
          ],
          "agentNotes": [
            "Connect to mcp.bannerbear.com/workflows or a comma-separated group path instead of /all, which loads 63 tools",
            "Treat 402 as spent quota and 429 as the 60 POST per 10 second limit, and back off yourself since no Retry-After is sent",
            "Use sync.api.bannerbear.com only for /v5/images, and expect a 408 after 10 seconds",
            "Ask for one format at scale 1 unless you need more, since jpg plus png at scale 2 costs 4 credits",
            "Create a V5 key (bb_ak_v5_) for V5 endpoints, since V2 keys are refused there"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 2,
          "avgRating": 4,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "C",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 60.5
            }
          ],
          "editorialScores": {
            "ergonomics": 71,
            "maintenance": 77,
            "payments": 35,
            "reliability": 45,
            "schema": 83,
            "security": 57,
            "transparency": 36
          },
          "provenanceScore": 86
        },
        "connect": {
          "http": "curl https://api.bannerbear.com/v5/account -H \"Authorization: Bearer $BANNERBEAR_API_KEY\"",
          "claudeCode": "claude mcp add --transport http bannerbear https://mcp.bannerbear.com/",
          "config": {
            "mcpServers": {
              "bannerbear": {
                "args": [
                  "-y",
                  "@bannerbear/mcp"
                ],
                "command": "npx",
                "env": {
                  "BANNERBEAR_API_KEY": "${BANNERBEAR_API_KEY}"
                }
              }
            }
          }
        },
        "letme": {
          "capability": "https://letme.dev/design.templates",
          "tool": "https://letme.dev/bannerbear"
        },
        "area": "design-diagrams",
        "unitPrices": [
          {
            "item": "Automate",
            "unit": "month",
            "usd": 49,
            "note": "1,000 API credits and 200 AI credits"
          },
          {
            "item": "Scale",
            "unit": "month",
            "usd": 149,
            "note": "10,000 API credits, higher tiers up to 40,000"
          },
          {
            "item": "Enterprise",
            "unit": "month",
            "usd": 299,
            "note": "50,000 API credits, higher tiers up to 2,000,000"
          }
        ],
        "provenance": {
          "legalEntity": "Twenty Four Twelve Systems Pte. Ltd.",
          "domain": "bannerbear.com",
          "domainRegistered": "2019-12-24",
          "endpointOnVendorDomain": true,
          "terms": "https://www.bannerbear.com/terms/",
          "privacy": "https://www.bannerbear.com/privacy/",
          "statusPage": "https://status.bannerbear.com",
          "changelog": "https://www.bannerbear.com/changelog/",
          "securityTxt": "none",
          "checked": "2026-09-30",
          "score": 86
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/bannerbear.json",
        "live": {
          "slug": "bannerbear",
          "probe": {
            "target": "https://api.bannerbear.com/v5",
            "method": "get",
            "lastAt": "2026-10-05T00:15:19.923170786Z",
            "lastOk": true,
            "lastStatus": 200,
            "lastMs": 292,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 288,
            "p95ms24h": 370,
            "samples24h": 272,
            "samples30d": 1105,
            "days": [
              {
                "date": "2026-09-30",
                "probes": 35,
                "ok": 35
              },
              {
                "date": "2026-10-01",
                "probes": 276,
                "ok": 276
              },
              {
                "date": "2026-10-02",
                "probes": 248,
                "ok": 248
              },
              {
                "date": "2026-10-03",
                "probes": 271,
                "ok": 271
              },
              {
                "date": "2026-10-04",
                "probes": 272,
                "ok": 272
              },
              {
                "date": "2026-10-05",
                "probes": 3,
                "ok": 3
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.bannerbear.com",
            "indicator": "unknown",
            "summary": "no machine-readable status found",
            "checkedAt": "2026-10-04T21:39:50.056105568Z"
          },
          "versions": [
            {
              "registry": "npm",
              "name": "@bannerbear/mcp",
              "version": "0.13.0",
              "seenAt": "2026-10-04T16:21:59.203673608Z"
            },
            {
              "registry": "npm",
              "name": "bannerbear",
              "version": "2.0.0",
              "seenAt": "2026-10-04T16:21:59.638417136Z"
            },
            {
              "registry": "pypi",
              "name": "bannerbear",
              "version": "1.2.0",
              "released": "2026-08-17",
              "seenAt": "2026-10-04T16:22:01.406835662Z"
            }
          ],
          "npmWeekly": 59,
          "pypiWeekly": 13,
          "securityTxt": {
            "url": "https://bannerbear.com/.well-known/security.txt",
            "state": "none",
            "checkedAt": "2026-10-04T15:16:03.933964163Z"
          },
          "llmsTxt": {
            "url": "https://www.bannerbear.com/llms.txt",
            "ok": true,
            "status": 200,
            "checkedAt": "2026-10-04T15:17:19.201244342Z"
          },
          "domain": {
            "domain": "bannerbear.com",
            "registered": "2019-12-24",
            "source": "https://rdap.verisign.com/com/v1/domain/bannerbear.com",
            "checkedAt": "2026-10-04T13:10:13.92674351Z"
          },
          "pages": [
            {
              "url": "https://www.bannerbear.com/changelog/",
              "kind": "deprecations",
              "status": 200,
              "checkedAt": "2026-10-04T15:49:19.767087648Z",
              "changedAt": "2026-10-03T15:37:15.347591267Z",
              "fingerprint": "bde6410f4430"
            },
            {
              "url": "https://www.bannerbear.com/pricing/",
              "kind": "pricing",
              "status": 200,
              "checkedAt": "2026-10-04T15:49:22.072711688Z",
              "changedAt": "2026-10-03T15:37:17.666410768Z",
              "fingerprint": "c5353dbeef56"
            },
            {
              "url": "https://www.bannerbear.com/privacy/",
              "kind": "privacy",
              "status": 200,
              "checkedAt": "2026-10-04T15:49:23.818698455Z",
              "changedAt": "2026-10-03T15:37:19.382213326Z",
              "fingerprint": "d9e156722e5e"
            },
            {
              "url": "https://www.bannerbear.com/terms/",
              "kind": "terms",
              "status": 200,
              "checkedAt": "2026-10-04T15:49:26.046727212Z",
              "changedAt": "2026-10-03T15:37:21.731236254Z",
              "fingerprint": "5a815814e68b"
            }
          ],
          "updatedAt": "2026-10-05T00:15:19.923170786Z"
        }
      },
      {
        "slug": "adobe-photoshop-api",
        "name": "Adobe Photoshop API",
        "vendor": "Adobe",
        "vendorUrl": "https://developer.adobe.com/firefly-services/docs/photoshop/",
        "kind": "http-api",
        "category": "design-assets",
        "summary": "Photoshop as an async REST service inside Firefly Services.",
        "url": "https://www.anchorterminal.com/tools/adobe-photoshop-api",
        "markdownUrl": "https://www.anchorterminal.com/tools/adobe-photoshop-api.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/adobe-photoshop-api.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/adobe-photoshop-api.json",
        "transports": [
          "http"
        ],
        "remoteUrl": "https://photoshop-api.adobe.io",
        "packages": [
          {
            "registry": "npm",
            "name": "@adobe/photoshop-apis"
          }
        ],
        "auth": "oauth",
        "authNotes": "OAuth server-to-server credentials from the Adobe Developer Console. Exchange client ID and secret at https://ims-na1.adobelogin.com/ims/token/v3 (scopes openid, AdobeID, read_organizations) for a 24-hour bearer token, then send it with the client ID in x-api-key. Inputs and outputs are pre-signed URLs on your own storage.",
        "pricing": "paid",
        "pricingNotes": "No public price list and no self-serve plan. Access needs an active enterprise contract that includes Firefly Services, arranged through an Adobe representative. Creative Cloud plans don't include API access (https://business.adobe.com/products/firefly-business.html).",
        "priceSummary": "Paid",
        "where": "hosted",
        "x402": {
          "level": "no",
          "evidence": "Enterprise contract billing only. No x402 in the docs or OpenAPI spec (checked 2026-09-30).",
          "endpoints": []
        },
        "toolCount": null,
        "popularity": {
          "githubStars": null,
          "npmWeekly": 498,
          "pypiWeekly": null,
          "asOf": "2026-09-30"
        },
        "docsUrl": "https://developer.adobe.com/firefly-services/docs/photoshop/",
        "openapi": "https://raw.githubusercontent.com/AdobeDocs/ffs-photoshop-API/main/static/photoshopv2-api.json",
        "capabilities": [
          "image.edit",
          "design.templates",
          "design.render"
        ],
        "tags": [
          "hosted",
          "closed-source",
          "enterprise",
          "openapi",
          "async-jobs",
          "webhooks"
        ],
        "lastRelease": "2026-09-08",
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 44.1,
          "grade": "E",
          "agentReady": false,
          "rank": 405,
          "ranked": true,
          "rankOf": 452,
          "categoryRank": 4,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 36,
            "maintenance": 42,
            "payments": 0,
            "reliability": 55,
            "schema": 70,
            "security": 62,
            "transparency": 61
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-01"
          },
          "negative": -4,
          "negativeNotes": [
            "2026-10-01. Two months after the v1 end of life on 2026-07-31, the getting-started page's first API call is still https://image.adobe.io/pie/psdService/hello, and the actions and rendering guides still show v1 /pie/psdService endpoints with no deprecation notice. The only official SDK, @adobe/photoshop-apis 2.0.1, calls v1 paths only. https://developer.adobe.com/firefly-services/docs/photoshop/getting-started/ and https://github.com/AdobeDocs/ffs-photoshop-API"
          ],
          "verdict": "Edits real PSDs, including text layers, smart objects, layer effects, groups and artboards. Enterprise contract only. No self-serve sign-up, free tier or public price.",
          "strengths": [
            "Edits real PSDs, including text layers, smart objects, layer effects, groups and artboards",
            "Runs Photoshop actions and UXP scripts server side",
            "Public OpenAPI 3.0.1 spec for v2 and a Markdown migration guide written for AI assistants",
            "Documented per-organisation limits and retry rules, including retry-after on 429",
            "OAuth server-to-server credentials with 24-hour tokens, and a signed security.txt with a bug bounty"
          ],
          "weaknesses": [
            "Enterprise contract only. No self-serve sign-up, free tier or public price",
            "The getting-started page and the official SDK still call v1 endpoints that reached end of life on 2026-07-31",
            "The release notes page has no entries, so changes are visible only in the docs repo",
            "Adobe's usage notes say error messages may not be helpful",
            "Every input and output is a pre-signed URL on your own storage"
          ],
          "agentNotes": [
            "Call v2 paths on photoshop-api.adobe.io. Remove background and its status live on image.adobe.io",
            "Skip @adobe/photoshop-apis and the getting-started curl, which still target v1 /pie/psdService paths",
            "Poll /v2/status/{jobId} or subscribe to I/O Events, since every call returns a job",
            "Retry only 5xx and 429, using retry-after and at most three attempts",
            "Cache the IMS token and refresh it before 24 hours run out"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 2,
          "avgRating": 1.5,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "E",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 44.1
            }
          ],
          "editorialScores": {
            "ergonomics": 36,
            "maintenance": 42,
            "payments": 0,
            "reliability": 55,
            "schema": 70,
            "security": 62,
            "transparency": 32
          },
          "provenanceScore": 90
        },
        "connect": {
          "http": "curl -X POST https://image.adobe.io/v2/remove-background \\\n  -H \"Authorization: Bearer $PS_FF_SERVICES_ACCESS_TOKEN\" -H \"x-api-key: $PS_FF_SERVICES_CLIENT_ID\" \\\n  -H \"Content-Type: application/json\" -d '{\"image\":{\"source\":{\"url\":\"\u003csigned_get_url\u003e\"}},\"mode\":\"cutout\",\"output\":{\"mediaType\":\"image/png\"}}'"
        },
        "letme": {
          "capability": "https://letme.dev/image.edit",
          "tool": "https://letme.dev/adobe-photoshop-api"
        },
        "sameCompany": [
          "adobe-firefly",
          "adobe-pdf-extract"
        ],
        "area": "design-diagrams",
        "provenance": {
          "legalEntity": "Adobe Inc.",
          "domain": "adobe.com",
          "domainRegistered": "1986-11-17",
          "endpointOnVendorDomain": true,
          "terms": "https://www.adobe.com/legal/terms.html",
          "privacy": "https://www.adobe.com/privacy/policy.html",
          "statusPage": "https://status.adobe.com",
          "changelog": "",
          "securityTxt": "valid",
          "checked": "2026-10-01",
          "notes": [
            "The API is served from photoshop-api.adobe.io and image.adobe.io, Adobe's developer API domain, not adobe.com",
            "The v2 OpenAPI spec is published in the AdobeDocs/ffs-photoshop-API GitHub repo",
            "The release notes page at developer.adobe.com/firefly-services/docs/photoshop/guides/release-notes/ has a heading and no entries as of 2026-10-01",
            "security.txt is PGP-signed, expires 2027-07-30 and lists an Intigriti bug bounty"
          ],
          "score": 90
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/adobe-photoshop-api.json",
        "live": {
          "slug": "adobe-photoshop-api",
          "probe": {
            "target": "https://photoshop-api.adobe.io",
            "method": "get",
            "lastAt": "2026-10-05T00:15:18.72231646Z",
            "lastOk": true,
            "lastStatus": 404,
            "lastMs": 64,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 64,
            "p95ms24h": 118,
            "samples24h": 272,
            "samples30d": 1105,
            "days": [
              {
                "date": "2026-09-30",
                "probes": 35,
                "ok": 35
              },
              {
                "date": "2026-10-01",
                "probes": 276,
                "ok": 276
              },
              {
                "date": "2026-10-02",
                "probes": 248,
                "ok": 248
              },
              {
                "date": "2026-10-03",
                "probes": 271,
                "ok": 271
              },
              {
                "date": "2026-10-04",
                "probes": 272,
                "ok": 272
              },
              {
                "date": "2026-10-05",
                "probes": 3,
                "ok": 3
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.adobe.com",
            "indicator": "unknown",
            "summary": "no machine-readable status found",
            "checkedAt": "2026-10-03T19:22:53.681474335Z"
          },
          "versions": [
            {
              "registry": "npm",
              "name": "@adobe/photoshop-apis",
              "version": "2.0.1",
              "seenAt": "2026-10-04T16:19:44.645856487Z"
            }
          ],
          "npmWeekly": 409,
          "securityTxt": {
            "url": "https://adobe.com/.well-known/security.txt",
            "state": "valid",
            "expires": "2027-07-30T01:00:00.000Z",
            "checkedAt": "2026-10-04T15:15:53.305878617Z"
          },
          "domain": {
            "domain": "adobe.com",
            "registered": "1986-11-17",
            "source": "https://rdap.verisign.com/com/v1/domain/adobe.com",
            "checkedAt": "2026-10-04T13:03:40.934529293Z"
          },
          "pages": [
            {
              "url": "https://developer.adobe.com/firefly-services/docs/photoshop/guides/release-notes/",
              "kind": "changelog",
              "status": 200,
              "checkedAt": "2026-10-01T13:12:05.524417157Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "af0d1bcf59a1"
            },
            {
              "url": "https://developer.adobe.com/firefly-services/docs/photoshop/getting-started/deprecation-announcement/",
              "kind": "deprecations",
              "status": 304,
              "checkedAt": "2026-10-04T15:42:34.76885782Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "964e96b3de59"
            }
          ],
          "updatedAt": "2026-10-05T00:15:18.72231646Z"
        }
      },
      {
        "slug": "placid",
        "name": "Placid API + MCP",
        "vendor": "Placid",
        "vendorUrl": "https://placid.app",
        "kind": "http-api",
        "category": "design-assets",
        "summary": "Template rendering to images, PDFs and videos through a REST API, a URL API and an MCP server, with an embeddable template editor SDK.",
        "url": "https://www.anchorterminal.com/tools/placid",
        "markdownUrl": "https://www.anchorterminal.com/tools/placid.md",
        "slimMarkdownUrl": "https://www.anchorterminal.com/tools/placid.min.md",
        "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/placid.json",
        "transports": [
          "http",
          "streamable-http"
        ],
        "remoteUrl": "https://api.placid.app/api/rest",
        "packages": [],
        "auth": "api-key",
        "authNotes": "Project-scoped API token, sent as a bearer token in the Authorization header. The MCP server has a per-project URL and takes the token as a bearer header or, where a client can't set headers, as ?api_token= in the URL.",
        "pricing": "paid",
        "pricingNotes": "Free trial, and unlimited watermarked previews in test mode. Basic $19 a month (500 credits), Pro $39 (2,500), Business $89 (25,000), VIP $249 (100,000). Yearly billing is 10 times the monthly price. 1 image is 1 credit (up to 4,000 px), 10 seconds of video is 10 credits, 1 PDF page is 2 credits (https://placid.app/pricing).",
        "priceSummary": "$19 / mo",
        "where": "hosted",
        "x402": {
          "level": "no",
          "evidence": "Subscription credits only. No x402 in the docs (checked 2026-09-30).",
          "endpoints": []
        },
        "toolCount": null,
        "popularity": {
          "githubStars": null,
          "npmWeekly": null,
          "pypiWeekly": null,
          "asOf": "2026-09-30"
        },
        "docsUrl": "https://placid.app/docs/2.0/introduction",
        "capabilities": [
          "design.templates",
          "design.render",
          "video.render"
        ],
        "tags": [
          "hosted",
          "closed-source",
          "mcp",
          "async-jobs",
          "webhooks"
        ],
        "graded": true,
        "anchor": {
          "graded": true,
          "score": 43.2,
          "grade": "E",
          "agentReady": false,
          "rank": 409,
          "ranked": true,
          "rankOf": 452,
          "categoryRank": 5,
          "methodology": "0.3",
          "run": "2026-10-01",
          "scores": {
            "ergonomics": 40,
            "maintenance": 7,
            "payments": 35,
            "reliability": 75,
            "schema": 34,
            "security": 34,
            "transparency": 60
          },
          "pending": [
            "performance",
            "tasks"
          ],
          "assessment": {
            "confidence": "medium",
            "date": "2026-10-01"
          },
          "negative": 0,
          "verdict": "Hyperping status page with separate App and API components and 90-day history. No OpenAPI, no llms.txt, and the MCP tool list isn't published.",
          "strengths": [
            "Hyperping status page with separate App and API components and 90-day history",
            "Rate-limit headers (Limit, Remaining, Reset) and exponential backoff guidance documented",
            "Unlimited watermarked previews in test mode, and a trial with no card",
            "MCP settings restrict which templates and which output types an agent can use",
            "Named Austrian legal entity, privacy policy updated in November 2024, DPA on request"
          ],
          "weaknesses": [
            "No OpenAPI, no llms.txt, and the MCP tool list isn't published",
            "MCP setup guide documents the API token in the URL query string",
            "Changelog has no dates, so there's no public record of recent changes",
            "PHP and Laravel libraries last tagged on 2022-07-20, pointing at the older placid.app/api/rest base",
            "Subprocessors and hosting location aren't disclosed"
          ],
          "agentNotes": [
            "Send the token in the `Authorization` header, not as ?api_token=, wherever the client allows it",
            "Read X-RateLimit-Remaining and wait for X-RateLimit-Reset after a 429",
            "Use test mode for watermarked previews while matching layer names, then switch to live renders",
            "Leave create_now off for batches, since it caps at 10 at once and may fail under load",
            "Poll the returned polling_url or pass webhook_success, since images start as queued"
          ],
          "metrics": {
            "kind": "remote",
            "measured": false
          },
          "reviewCount": 2,
          "avgRating": 3.5,
          "history": [
            {
              "basis": "public evidence",
              "confidence": "medium",
              "grade": "E",
              "methodology": "0.3",
              "pending": [
                "performance",
                "tasks"
              ],
              "run": "2026-10-01",
              "runLabel": "October 2026 research run",
              "score": 43.2
            }
          ],
          "editorialScores": {
            "ergonomics": 40,
            "maintenance": 7,
            "payments": 35,
            "reliability": 75,
            "schema": 34,
            "security": 34,
            "transparency": 33
          },
          "provenanceScore": 86
        },
        "connect": {
          "http": "curl https://api.placid.app/api/rest/templates -H \"Authorization: Bearer $PLACID_API_TOKEN\"",
          "claudeCode": "claude mcp add --transport http placid https://mcp.placid.app/\u003cyour-project-url\u003e --header \"Authorization: Bearer $PLACID_API_TOKEN\""
        },
        "letme": {
          "capability": "https://letme.dev/design.templates",
          "tool": "https://letme.dev/placid"
        },
        "area": "design-diagrams",
        "unitPrices": [
          {
            "item": "Basic",
            "unit": "month",
            "usd": 19,
            "note": "500 credits, $190 billed yearly"
          },
          {
            "item": "Pro",
            "unit": "month",
            "usd": 39,
            "note": "2,500 credits, $390 billed yearly"
          },
          {
            "item": "Business",
            "unit": "month",
            "usd": 89,
            "note": "25,000 credits, $890 billed yearly"
          },
          {
            "item": "VIP",
            "unit": "month",
            "usd": 249,
            "note": "100,000 credits, $2,490 billed yearly"
          }
        ],
        "provenance": {
          "legalEntity": "Nifty Software GmbH",
          "domain": "placid.app",
          "domainRegistered": "2018-05-08",
          "endpointOnVendorDomain": true,
          "terms": "https://placid.app/terms-and-conditions",
          "privacy": "https://placid.app/privacy",
          "statusPage": "https://status.placid.app",
          "changelog": "https://headwayapp.co/placid-changelog",
          "securityTxt": "none",
          "checked": "2026-09-30",
          "notes": [
            "The changelog is hosted on Headway (headwayapp.co), not on placid.app"
          ],
          "score": 86
        },
        "pageJsonUrl": "https://www.anchorterminal.com/tools/placid.json",
        "live": {
          "slug": "placid",
          "probe": {
            "target": "https://api.placid.app/api/rest",
            "method": "get",
            "lastAt": "2026-10-05T00:15:28.240077778Z",
            "lastOk": true,
            "lastStatus": 404,
            "lastMs": 167,
            "authRequired": false,
            "uptime24h": 100,
            "uptime30d": 100,
            "p50ms24h": 179,
            "p95ms24h": 277,
            "samples24h": 272,
            "samples30d": 1105,
            "days": [
              {
                "date": "2026-09-30",
                "probes": 35,
                "ok": 35
              },
              {
                "date": "2026-10-01",
                "probes": 276,
                "ok": 276
              },
              {
                "date": "2026-10-02",
                "probes": 248,
                "ok": 248
              },
              {
                "date": "2026-10-03",
                "probes": 271,
                "ok": 271
              },
              {
                "date": "2026-10-04",
                "probes": 272,
                "ok": 272
              },
              {
                "date": "2026-10-05",
                "probes": 3,
                "ok": 3
              }
            ]
          },
          "vendorStatus": {
            "page": "https://status.placid.app",
            "indicator": "unknown",
            "summary": "no machine-readable status found",
            "checkedAt": "2026-10-04T21:40:23.867014147Z"
          },
          "securityTxt": {
            "url": "https://placid.app/.well-known/security.txt",
            "state": "none",
            "checkedAt": "2026-10-04T15:15:54.235480463Z"
          },
          "domain": {
            "domain": "placid.app",
            "registered": "2018-05-08",
            "source": "https://pubapi.registry.google/rdap/domain/placid.app",
            "checkedAt": "2026-10-04T13:08:19.054609586Z"
          },
          "pages": [
            {
              "url": "https://headwayapp.co/placid-changelog",
              "kind": "changelog",
              "status": 0,
              "checkedAt": "2026-10-04T15:44:58.203878275Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "blockedByRobots": true
            },
            {
              "url": "https://placid.app/pricing",
              "kind": "pricing",
              "status": 200,
              "checkedAt": "2026-10-04T15:46:45.767217645Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "99e692b08293"
            },
            {
              "url": "https://placid.app/privacy",
              "kind": "privacy",
              "status": 200,
              "checkedAt": "2026-10-04T15:46:47.89750901Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "4ce631cc70ce"
            },
            {
              "url": "https://placid.app/terms-and-conditions",
              "kind": "terms",
              "status": 200,
              "checkedAt": "2026-10-04T15:46:49.893478234Z",
              "changedAt": "0001-01-01T00:00:00Z",
              "fingerprint": "c733087a07e6"
            }
          ],
          "updatedAt": "2026-10-05T00:15:28.240077778Z"
        }
      }
    ]
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/categories/design-assets",
    "json": "https://www.anchorterminal.com/categories/design-assets.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/categories/design-assets.md",
    "slim": "https://www.anchorterminal.com/categories/design-assets.min.md"
  },
  "markdown": "APIs that fill templates and render images, social graphics, banners, PDFs and video from data, or edit images in bulk. Compared on template tooling, output formats, render speed, price per render and what the licence lets you publish.\n\n- Tools ranked: 5 · agent-ready (BB or better): 0 · accept x402: 0 · hosted endpoints: 5 · desk reviews by the panel: 10\n- JSON: https://www.anchorterminal.com/api/v1/tools.json (list) · https://www.anchorterminal.com/api/v1/rankings.json (ranked) · https://www.anchorterminal.com/api/v1/x402.json (payable) · https://www.anchorterminal.com/api/v1/capabilities.json (by capability)\n- Grades run AA, A, BB, B, C, D, E, F · methodology: https://www.anchorterminal.com/benchmark/\n\n- Capabilities in this category: design.templates, design.render, image.edit, design.brand\n- https://letme.dev/design.templates picks the top-graded tool in this list and says how to call it direct; calling through letme comes later (https://www.anchorterminal.com/letme/index.md)\n\n## Ranking\n\n| # | Tool | Vendor | Kind | Category | Grade | Score | Confidence | x402 | Auth | Where | Reviews | Page |\n| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |\n| 178 | Canva REST APIs + MCP | Canva | HTTP API | Assets | B | 64.6 | medium | no | OAuth | hosted | 3/5 (2) | https://www.anchorterminal.com/tools/canva.md |\n| 231 | Templated API + MCP | Templated | HTTP API | Assets | C | 61.3 | medium | no | OAuth or key | hosted + local | 4/5 (2) | https://www.anchorterminal.com/tools/templated.md |\n| 245 | Bannerbear API + MCP | Bannerbear | HTTP API | Assets | C | 60.5 | medium | no | OAuth or key | hosted + local | 4/5 (2) | https://www.anchorterminal.com/tools/bannerbear.md |\n| 405 | Adobe Photoshop API | Adobe | HTTP API | Assets | E | 44.1 | medium | no | OAuth | hosted | 1.5/5 (2) | https://www.anchorterminal.com/tools/adobe-photoshop-api.md |\n| 409 | Placid API + MCP | Placid | HTTP API | Assets | E | 43.2 | medium | no | API key | hosted | 3.5/5 (2) | https://www.anchorterminal.com/tools/placid.md |\n\nScores are from public evidence against the published checklist (https://www.anchorterminal.com/benchmark/), with Performance and Task success pending. p95 latency and context cost come from our probes, which haven't run yet.\n\n## Summaries\n\n### 178. Canva REST APIs + MCP, B (64.6)\n\nCanva's REST APIs and hosted MCP server connect applications and agents to its design platform. OpenAPI 3.0 with 59 described operations, per-user rate limits and a 78-value error code enum. No server-to-server key, so unattended batch rendering has to run under one user's OAuth grant.\n\n- Page: https://www.anchorterminal.com/tools/canva · Markdown: https://www.anchorterminal.com/tools/canva.md · JSON: https://www.anchorterminal.com/api/v1/tools/canva.json\n- Capabilities: design.templates, design.render, design.brand, video.render · endpoint: `https://api.canva.com/rest/v1`\n\n### 231. Templated API + MCP, C (61.3)\n\nTemplate 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. MIT-licensed MCP server with 25 tools, every one annotated with readOnlyHint and destructiveHint. One API key with full account access, and the MCP docs offer it as ?apiKey= in the URL.\n\n- Page: https://www.anchorterminal.com/tools/templated · Markdown: https://www.anchorterminal.com/tools/templated.md · JSON: https://www.anchorterminal.com/api/v1/tools/templated.json\n- Capabilities: design.templates, design.render, video.render · endpoint: `https://api.templated.io/v1`\n\n### 245. Bannerbear API + MCP, C (60.5)\n\nTemplate-based image, PDF and animation rendering, plus video tools and multi-step workflows, over a REST API (V5 since August 2026) and an official MCP server, hosted with OAuth or run locally with an API key. Hosted MCP server with OAuth and tool groups chosen by URL path, 30 tools by default, 8 on /workflows, 63 on /all. Privacy policy and terms last updated on 29 June 2021, with no retention periods and two named third parties.\n\n- Page: https://www.anchorterminal.com/tools/bannerbear · Markdown: https://www.anchorterminal.com/tools/bannerbear.md · JSON: https://www.anchorterminal.com/api/v1/tools/bannerbear.json\n- Capabilities: design.templates, design.render, video.render, image.edit · endpoint: `https://api.bannerbear.com/v5`\n\n### 405. Adobe Photoshop API, E (44.1)\n\nPhotoshop as an async REST service inside Firefly Services. Edits real PSDs, including text layers, smart objects, layer effects, groups and artboards. Enterprise contract only. No self-serve sign-up, free tier or public price.\n\n- Page: https://www.anchorterminal.com/tools/adobe-photoshop-api · Markdown: https://www.anchorterminal.com/tools/adobe-photoshop-api.md · JSON: https://www.anchorterminal.com/api/v1/tools/adobe-photoshop-api.json\n- Capabilities: image.edit, design.templates, design.render · endpoint: `https://photoshop-api.adobe.io`\n\n### 409. Placid API + MCP, E (43.2)\n\nTemplate rendering to images, PDFs and videos through a REST API, a URL API and an MCP server, with an embeddable template editor SDK. Hyperping status page with separate App and API components and 90-day history. No OpenAPI, no llms.txt, and the MCP tool list isn't published.\n\n- Page: https://www.anchorterminal.com/tools/placid · Markdown: https://www.anchorterminal.com/tools/placid.md · JSON: https://www.anchorterminal.com/api/v1/tools/placid.json\n- Capabilities: design.templates, design.render, video.render · endpoint: `https://api.placid.app/api/rest`\n\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Programmatic asset production",
        "url": ""
      }
    ],
    "description": "5 programmatic asset production listings ranked by the Anchor benchmark. Leader Canva REST APIs + MCP (B). APIs that fill templates and render images, social graphics, banners, PDFs and video from data, or edit images in bulk. Compared on template tooling, output formats, render speed, price per render and what the licence lets you publish.",
    "facts": [
      "Canva REST APIs + MCP B",
      "Templated API + MCP C",
      "Bannerbear API + MCP C"
    ],
    "h1": "Programmatic image and design asset APIs",
    "image": "https://www.anchorterminal.com/assets/og/categories-design-assets.png",
    "path": "/categories/design-assets",
    "published": "",
    "section": "tools",
    "title": "Programmatic image and design asset APIs, ranked | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/categories/design-assets"
  },
  "tokens": {
    "markdown": 1600,
    "slim": 380
  },
  "version": 1
}
