{
  "data": {
    "a": {
      "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",
      "dns": "bannerbear.grade.anchorterminal.com",
      "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": 59.6,
        "grade": "C",
        "agentReady": false,
        "rank": 690,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 4,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 71,
          "maintenance": 67,
          "payments": 35,
          "reliability": 45,
          "schema": 83,
          "security": 57,
          "transparency": 61
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-04"
        },
        "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.",
        "bestFor": "Teams and agents that render branded images, PDFs and short animations from data and want an MCP server they can narrow.",
        "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 no incident history could be read",
          "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.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 59.6
          }
        ],
        "editorialScores": {
          "ergonomics": 71,
          "maintenance": 67,
          "payments": 35,
          "reliability": 45,
          "schema": 83,
          "security": 57,
          "transparency": 36
        },
        "provenanceScore": 86,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-04",
            "maintenance": "2026-11-04",
            "payments": "2026-11-04",
            "reliability": "2026-11-04",
            "schema": "2026-11-04",
            "security": "2026-11-04",
            "transparency": "2026-11-04"
          },
          "last": "2026-11-04",
          "lastMoved": "2026-11-04",
          "oldest": "2026-11-04",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "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-11-07T18:20:12.655082505Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 369,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 304,
          "p95ms24h": 383,
          "samples24h": 239,
          "samples30d": 7910,
          "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": 251,
              "ok": 251
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 248,
              "ok": 248
            },
            {
              "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": 187,
              "ok": 187
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.bannerbear.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-07T04:47:09.613520669Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@bannerbear/mcp",
            "version": "0.14.0",
            "seenAt": "2026-11-06T23:10:05.381729656Z"
          },
          {
            "registry": "npm",
            "name": "bannerbear",
            "version": "2.0.0",
            "seenAt": "2026-11-06T23:10:05.612233322Z"
          },
          {
            "registry": "pypi",
            "name": "bannerbear",
            "version": "1.2.0",
            "released": "2026-08-17",
            "seenAt": "2026-11-06T23:10:07.584626819Z"
          }
        ],
        "npmWeekly": 43,
        "pypiWeekly": 7,
        "securityTxt": {
          "url": "https://bannerbear.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T15:59:36.083423614Z"
        },
        "llmsTxt": {
          "url": "https://www.bannerbear.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:31:41.625425226Z"
        },
        "domain": {
          "domain": "bannerbear.com",
          "registered": "2019-12-24",
          "source": "https://rdap.verisign.com/com/v1/domain/bannerbear.com",
          "checkedAt": "2026-11-01T14:19:47.116436649Z"
        },
        "pages": [
          {
            "url": "https://www.bannerbear.com/changelog/",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-11-07T14:25:20.96968433Z",
            "changedAt": "2026-10-20T00:09:36.078651063Z",
            "fingerprint": "e870d5e2d067"
          },
          {
            "url": "https://www.bannerbear.com/pricing/",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:25:23.351462002Z",
            "changedAt": "2026-10-20T00:09:38.499010974Z",
            "fingerprint": "7593e775cfa8"
          },
          {
            "url": "https://www.bannerbear.com/privacy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:25:25.064882863Z",
            "changedAt": "2026-10-20T00:09:40.328580226Z",
            "fingerprint": "8407cd85f021"
          },
          {
            "url": "https://www.bannerbear.com/terms/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:25:27.355617325Z",
            "changedAt": "2026-10-20T00:09:42.434701388Z",
            "fingerprint": "b369afa2fccf"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.bannerbear.com/",
          "checkedAt": "2026-11-07T01:42:41.878144214Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-11-07T01:42:41.878144214Z"
        },
        "updatedAt": "2026-11-07T18:20:12.655082505Z"
      }
    },
    "answer": "Bannerbear API + MCP scores 59.6 (C) on agent readiness against DynaPictures's 43.2 (E), and leads in 6 of 7 scored categories.",
    "b": {
      "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": 1239,
        "ranked": true,
        "rankOf": 1486,
        "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-07T18:20:21.965331454Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 339,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 220,
          "p95ms24h": 337,
          "samples24h": 200,
          "samples30d": 200,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "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-07T18:20:21.965331454Z"
      }
    },
    "edges": [
      {
        "by": 63,
        "category": "maintenance",
        "leads": "bannerbear",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "Newest changelog entry 18 September 2026, 47 days before this check (20, down from 30 on time). Three dated entries since 6 August, 18 August, 9 September and 18 September (20). The MCP repository's 0.14.0 commit is dated 7 October 2026, but its npm publication couldn't be read on 4 November, so it doesn't set recency (as growthbook's unconfirmed SDK). The four SDK repositories' newest tags are from 13 August 2026 (Node and PHP v1.6.0, Python v1.1.0, Ruby v0.3.0), older than the changelog entry. Monthly public changelog. We didn't check support response or the MCP repo's issues (10). Official SDKs in four languages announced in May 2026 and @bannerbear/mcp 0.13.0 published in September 2026, but the MCP server isn't in the official MCP registry, which lists only a third-party Bannerbear server (12). The MCP repo has test scripts but no CI workflow, and depends on @modelcontextprotocol/sdk ^1.12.0 (5).",
          "b": "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."
        },
        "scores": {
          "a": 67,
          "b": 4
        }
      },
      {
        "by": 31,
        "category": "security",
        "leads": "bannerbear",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "V5 keys can be scoped per resource and action (`images:write`, `templates:read`) and pinned to browser origins, and the hosted MCP uses OAuth. Unscoped keys get full access, and we found no rotation guidance (27). A read-scoped key yields a read-only MCP tool list, but delete tools run with no confirmation step (12). The tool returns renders and records from your own account, little untrusted content (10). Audit logs are listed for the Enterprise plan at $299 a month only (8). No security.txt and /security returns 404. No bug bounty, disclosure policy or certification found. 2FA from the Scale plan, SSO on Enterprise (0).",
          "b": "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."
        },
        "scores": {
          "a": 57,
          "b": 26
        }
      },
      {
        "by": 26,
        "category": "ergonomics",
        "leads": "bannerbear",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "The hosted server picks tool groups by path. The default set is 30 and /workflows is 8, and a scoped key hides tools it can't use (15 for 11 to 30, plus 8 for profiles and scope filtering). The docs say 63 tools on /all, and the MCP source at 0.14.0 (7 October 2026) adds four media tools outside the default set. Lists take page and limit up to 100, with no field selection (15). Status codes from 400 to 429 documented, 402 for spent quota, and the MCP rejects contradictory inputs with a plain message before the call (15). No idempotency key, no readOnlyHint or destructiveHint in the source, and five tools delete permanently. Polling a 202 job by GET is safe (3). Official SDKs for Ruby, Node, Python and PHP, and the MCP polls renders for you by default (15).",
          "b": "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."
        },
        "scores": {
          "a": 71,
          "b": 45
        }
      },
      {
        "by": 5,
        "category": "payments",
        "leads": "bannerbear",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 in the docs or the OpenAPI (0). Plans are public and the pricing page states credit costs per unit (1 credit per image per format and scale step, 2 credits a second of animation, 1 to 4 per media tool), between plan-only and per-unit pricing (15). Trial with 30 API credits and no card (20). A person signs up in a browser to get a key (0).",
          "b": "No x402, MPP or L402 (0). Image allowances per plan and AI credit packs ($20 for 1,000 credits) are public, but plan prices are filled in by the FastSpring script and weren't readable (10 of 20). Free plan and a 14-day trial with 30 API credits, no card (20). auth.md says a person has to copy the key; there is no OAuth or programmatic key (0). 0 + 10 + 20 + 0 = 30."
        },
        "scores": {
          "a": 35,
          "b": 30
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Bannerbear",
        "b": "DynaPictures GmbH",
        "name": "Vendor"
      },
      {
        "a": "https://api.bannerbear.com/v5",
        "b": "https://api.dynapictures.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP, stdio",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "none",
        "b": "Closed service under the DynaPictures terms of use (revision 2/2026)",
        "name": "Licence"
      },
      {
        "a": "63",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-18",
        "b": "none",
        "name": "Last release"
      },
      {
        "a": "2021-06-29",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2021-06-29",
        "b": "no date given",
        "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": "1.1k npm/wk, 8 PyPI/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "4/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Bannerbear API + MCP scores 59.6 (C) on agent readiness against DynaPictures's 43.2 (E), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, Bannerbear API + MCP or DynaPictures?"
      },
      {
        "answer": "Bannerbear API + MCP takes an API key or an OAuth sign-in. DynaPictures needs an API key.",
        "question": "Do Bannerbear API + MCP and DynaPictures need an API key?"
      },
      {
        "answer": "Yes. Bannerbear API + MCP has a hosted endpoint at https://api.bannerbear.com/v5 and DynaPictures at https://api.dynapictures.com.",
        "question": "Can an agent call Bannerbear API + MCP and DynaPictures without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Agent ergonomics, 71 against 45",
          "Security \u0026 auth, 57 against 26",
          "Payments \u0026 pricing, 35 against 30",
          "Maintenance \u0026 community, 67 against 4"
        ],
        "also": [
          "Runs on your own machine"
        ],
        "goodFor": "Teams and agents that render branded images, PDFs and short animations from data and want an MCP server they can narrow.",
        "slug": "bannerbear",
        "watchFor": "Privacy policy and terms last updated on 29 June 2021, with no retention periods and two named third parties"
      },
      {
        "aheadOn": null,
        "also": null,
        "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"
      }
    ],
    "history": {
      "bannerbear": [
        {
          "causes": [
            "time"
          ],
          "date": "2026-11-04",
          "delta": -0.9,
          "from": 60.5,
          "fromGrade": "C",
          "to": 59.6,
          "toGrade": "C"
        }
      ],
      "dynapictures": null
    },
    "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/apitemplate-io-vs-bannerbear.json",
        "title": "APITemplate.io vs Bannerbear API + MCP",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-bannerbear"
      },
      {
        "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/bannerbear-vs-canva.json",
        "title": "Bannerbear API + MCP vs Canva REST APIs + MCP",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-canva"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bannerbear-vs-contentdrips.json",
        "title": "Bannerbear API + MCP vs Contentdrips API and MCP",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-contentdrips"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bannerbear-vs-creatomate.json",
        "title": "Bannerbear API + MCP vs Creatomate",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-creatomate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bannerbear-vs-layerre.json",
        "title": "Bannerbear API + MCP vs Layerre",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-layerre"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bannerbear-vs-photoroom.json",
        "title": "Bannerbear API + MCP vs Photoroom API",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-photoroom"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bannerbear-vs-pictify.json",
        "title": "Bannerbear API + MCP vs Pictify",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-pictify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bannerbear-vs-pixelixe.json",
        "title": "Bannerbear API + MCP vs Pixelixe",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-pixelixe"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bannerbear-vs-placid.json",
        "title": "Bannerbear API + MCP vs Placid API + MCP",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-placid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bannerbear-vs-postnitro.json",
        "title": "Bannerbear API + MCP vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bannerbear-vs-robolly.json",
        "title": "Bannerbear API + MCP vs Robolly",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-robolly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bannerbear-vs-shotstack.json",
        "title": "Bannerbear API + MCP vs Shotstack",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-shotstack"
      },
      {
        "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/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/creatomate-vs-dynapictures.json",
        "title": "Creatomate vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/creatomate-vs-dynapictures"
      },
      {
        "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/dynapictures-vs-templated.json",
        "title": "DynaPictures vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-bannerbear.json",
        "title": "Abyssale vs Bannerbear API + MCP",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-bannerbear"
      },
      {
        "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/bannerbear-vs-osmo-cli.json",
        "title": "Bannerbear API + MCP vs Osmo CLI",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-osmo-cli"
      },
      {
        "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/adobe-photoshop-api-vs-bannerbear.json",
        "title": "Adobe Photoshop API vs Bannerbear API + MCP",
        "url": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-bannerbear"
      }
    ],
    "panel": null,
    "scores": [
      {
        "bannerbear": 45,
        "by": 3,
        "dynapictures": 42,
        "edge": "bannerbear",
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "bannerbear": 83,
        "by": 1,
        "dynapictures": 82,
        "edge": "bannerbear",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "bannerbear": 71,
        "by": 26,
        "dynapictures": 45,
        "edge": "bannerbear",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "bannerbear": 57,
        "by": 31,
        "dynapictures": 26,
        "edge": "bannerbear",
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "bannerbear": 35,
        "by": 5,
        "dynapictures": 30,
        "edge": "bannerbear",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "bannerbear": 67,
        "by": 63,
        "dynapictures": 4,
        "edge": "bannerbear",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "bannerbear": 61,
        "by": 2,
        "dynapictures": 63,
        "edge": "dynapictures",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Bannerbear API + MCP scores 59.6 (C) on agent readiness against DynaPictures's 43.2 (E), and leads in 6 of 7 scored categories. Both do design templates.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "bannerbear": "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.",
      "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/bannerbear-vs-dynapictures",
    "json": "https://www.anchorterminal.com/compare/bannerbear-vs-dynapictures.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/bannerbear-vs-dynapictures.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/bannerbear-vs-dynapictures.min.md"
  },
  "markdown": "Bannerbear API + MCP scores 59.6 (C) on agent readiness against DynaPictures's 43.2 (E), and leads in 6 of 7 scored categories. Both do design templates.\n\n- Bannerbear API + MCP: grade C, 59.6/100, rank #690 of 1486. Markdown https://www.anchorterminal.com/tools/bannerbear.md · JSON https://www.anchorterminal.com/api/v1/tools/bannerbear.json\n- DynaPictures: grade E, 43.2/100, rank #1239 of 1486. Markdown https://www.anchorterminal.com/tools/dynapictures.md · JSON https://www.anchorterminal.com/api/v1/tools/dynapictures.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### Bannerbear API + MCP (C)\n\nGood for: Teams and agents that render branded images, PDFs and short animations from data and want an MCP server they can narrow.\n\nAhead on:\n- Agent ergonomics, 71 against 45\n- Security \u0026 auth, 57 against 26\n- Payments \u0026 pricing, 35 against 30\n- Maintenance \u0026 community, 67 against 4\n\nAlso in its favour:\n- Runs on your own machine\n\nWatch for: Privacy policy and terms last updated on 29 June 2021, with no retention periods and two named third parties\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\nWatch for: One API key per user with full account access and no scopes; a new key needs an email to support\n\n\n## Why the edge\n\n### Maintenance \u0026 community: Bannerbear API + MCP +63\n\n- Bannerbear API + MCP (67): Newest changelog entry 18 September 2026, 47 days before this check (20, down from 30 on time). Three dated entries since 6 August, 18 August, 9 September and 18 September (20). The MCP repository's 0.14.0 commit is dated 7 October 2026, but its npm publication couldn't be read on 4 November, so it doesn't set recency (as growthbook's unconfirmed SDK). The four SDK repositories' newest tags are from 13 August 2026 (Node and PHP v1.6.0, Python v1.1.0, Ruby v0.3.0), older than the changelog entry. Monthly public changelog. We didn't check support response or the MCP repo's issues (10). Official SDKs in four languages announced in May 2026 and @bannerbear/mcp 0.13.0 published in September 2026, but the MCP server isn't in the official MCP registry, which lists only a third-party Bannerbear server (12). The MCP repo has test scripts but no CI workflow, and depends on @modelcontextprotocol/sdk ^1.12.0 (5).\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\n### Security \u0026 auth: Bannerbear API + MCP +31\n\n- Bannerbear API + MCP (57): V5 keys can be scoped per resource and action (`images:write`, `templates:read`) and pinned to browser origins, and the hosted MCP uses OAuth. Unscoped keys get full access, and we found no rotation guidance (27). A read-scoped key yields a read-only MCP tool list, but delete tools run with no confirmation step (12). The tool returns renders and records from your own account, little untrusted content (10). Audit logs are listed for the Enterprise plan at $299 a month only (8). No security.txt and /security returns 404. No bug bounty, disclosure policy or certification found. 2FA from the Scale plan, SSO on Enterprise (0).\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\n### Agent ergonomics: Bannerbear API + MCP +26\n\n- Bannerbear API + MCP (71): The hosted server picks tool groups by path. The default set is 30 and /workflows is 8, and a scoped key hides tools it can't use (15 for 11 to 30, plus 8 for profiles and scope filtering). The docs say 63 tools on /all, and the MCP source at 0.14.0 (7 October 2026) adds four media tools outside the default set. Lists take page and limit up to 100, with no field selection (15). Status codes from 400 to 429 documented, 402 for spent quota, and the MCP rejects contradictory inputs with a plain message before the call (15). No idempotency key, no readOnlyHint or destructiveHint in the source, and five tools delete permanently. Polling a 202 job by GET is safe (3). Official SDKs for Ruby, Node, Python and PHP, and the MCP polls renders for you by default (15).\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\n### Payments \u0026 pricing: Bannerbear API + MCP +5\n\n- Bannerbear API + MCP (35): No x402, MPP or L402 in the docs or the OpenAPI (0). Plans are public and the pricing page states credit costs per unit (1 credit per image per format and scale step, 2 credits a second of animation, 1 to 4 per media tool), between plan-only and per-unit pricing (15). Trial with 30 API credits and no card (20). A person signs up in a browser to get a key (0).\n- DynaPictures (30): No x402, MPP or L402 (0). Image allowances per plan and AI credit packs ($20 for 1,000 credits) are public, but plan prices are filled in by the FastSpring script and weren't readable (10 of 20). Free plan and a 14-day trial with 30 API credits, no card (20). auth.md says a person has to copy the key; there is no OAuth or programmatic key (0). 0 + 10 + 20 + 0 = 30.\n\n## Score by category\n\n| Category | Weight | Bannerbear API + MCP | DynaPictures | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 45 | 42 | Bannerbear API + MCP +3 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 83 | 82 | Bannerbear API + MCP +1 |\n| Agent ergonomics | 13% (16.2 this run) | 71 | 45 | Bannerbear API + MCP +26 |\n| Security \u0026 auth | 14% (17.5 this run) | 57 | 26 | Bannerbear API + MCP +31 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 30 | Bannerbear API + MCP +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 67 | 4 | Bannerbear API + MCP +63 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 61 | 63 | DynaPictures +2 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **59.6 · C** | **43.2 · E** | |\n\n## Facts side by side\n\n| Fact | Bannerbear API + MCP | DynaPictures |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Bannerbear | DynaPictures GmbH |\n| Hosted endpoint | `https://api.bannerbear.com/v5` | `https://api.dynapictures.com` |\n| Transports | HTTP, Streamable HTTP, stdio | HTTP, Streamable HTTP |\n| Auth | OAuth or key | API key |\n| Pricing | Paid | Freemium |\n| x402 | no | no |\n| Licence | none | Closed service under the DynaPictures terms of use (revision 2/2026) |\n| Tools exposed | 63 | none |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-09-18 | none |\n| Terms last updated | 2021-06-29 | no date given |\n| Privacy policy last updated | 2021-06-29 | no date given |\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 | 1.1k npm/wk, 8 PyPI/wk | none |\n| Agent reviews | 4/5 (2) | none |\n\n## How the scores have moved\n\n### Bannerbear API + MCP\n\n- -0.9 on 4 November 2026: time\n\n### DynaPictures\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Bannerbear API + MCP.** 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**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## Before you call either\n\n### Bannerbear API + MCP\n\n1. Connect to mcp.bannerbear.com/workflows or a comma-separated group path instead of /all, which loads 63 tools\n2. 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\n3. Use sync.api.bannerbear.com only for /v5/images, and expect a 408 after 10 seconds\n4. Ask for one format at scale 1 unless you need more, since jpg plus png at scale 2 costs 4 credits\n5. Create a V5 key (bb_ak_v5_) for V5 endpoints, since V2 keys are refused there\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## Questions\n\n### Which is better for AI agents, Bannerbear API + MCP or DynaPictures?\n\nBannerbear API + MCP scores 59.6 (C) on agent readiness against DynaPictures's 43.2 (E), and leads in 6 of 7 scored categories.\n\n### Do Bannerbear API + MCP and DynaPictures need an API key?\n\nBannerbear API + MCP takes an API key or an OAuth sign-in. DynaPictures needs an API key.\n\n### Can an agent call Bannerbear API + MCP and DynaPictures without installing anything?\n\nYes. Bannerbear API + MCP has a hosted endpoint at https://api.bannerbear.com/v5 and DynaPictures at https://api.dynapictures.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/bannerbear-vs-dynapictures.json, and with the fewest tokens: https://www.anchorterminal.com/compare/bannerbear-vs-dynapictures.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"bannerbear\", \"b\": \"dynapictures\"}`. From a terminal: `anchor compare bannerbear dynapictures`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/bannerbear.json and https://www.anchorterminal.com/api/v1/tools/dynapictures.json\n\n## Other comparisons with Bannerbear API + MCP or DynaPictures\n\n- [Adobe Photoshop API vs DynaPictures](https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-dynapictures.md)\n- [APITemplate.io vs Bannerbear API + MCP](https://www.anchorterminal.com/compare/apitemplate-io-vs-bannerbear.md)\n- [APITemplate.io vs DynaPictures](https://www.anchorterminal.com/compare/apitemplate-io-vs-dynapictures.md)\n- [Bannerbear API + MCP vs Canva REST APIs + MCP](https://www.anchorterminal.com/compare/bannerbear-vs-canva.md)\n- [Bannerbear API + MCP vs Contentdrips API and MCP](https://www.anchorterminal.com/compare/bannerbear-vs-contentdrips.md)\n- [Bannerbear API + MCP vs Creatomate](https://www.anchorterminal.com/compare/bannerbear-vs-creatomate.md)\n- [Bannerbear API + MCP vs Layerre](https://www.anchorterminal.com/compare/bannerbear-vs-layerre.md)\n- [Bannerbear API + MCP vs Photoroom API](https://www.anchorterminal.com/compare/bannerbear-vs-photoroom.md)\n- [Bannerbear API + MCP vs Pictify](https://www.anchorterminal.com/compare/bannerbear-vs-pictify.md)\n- [Bannerbear API + MCP vs Pixelixe](https://www.anchorterminal.com/compare/bannerbear-vs-pixelixe.md)\n- [Bannerbear API + MCP vs Placid API + MCP](https://www.anchorterminal.com/compare/bannerbear-vs-placid.md)\n- [Bannerbear API + MCP vs PostNitro](https://www.anchorterminal.com/compare/bannerbear-vs-postnitro.md)\n- [Bannerbear API + MCP vs Robolly](https://www.anchorterminal.com/compare/bannerbear-vs-robolly.md)\n- [Bannerbear API + MCP vs Shotstack](https://www.anchorterminal.com/compare/bannerbear-vs-shotstack.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- [Contentdrips API and MCP vs DynaPictures](https://www.anchorterminal.com/compare/contentdrips-vs-dynapictures.md)\n- [Creatomate vs DynaPictures](https://www.anchorterminal.com/compare/creatomate-vs-dynapictures.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- [DynaPictures vs Templated API + MCP](https://www.anchorterminal.com/compare/dynapictures-vs-templated.md)\n- [Abyssale vs Bannerbear API + MCP](https://www.anchorterminal.com/compare/abyssale-vs-bannerbear.md)\n- [Abyssale vs DynaPictures](https://www.anchorterminal.com/compare/abyssale-vs-dynapictures.md)\n- [Bannerbear API + MCP vs Osmo CLI](https://www.anchorterminal.com/compare/bannerbear-vs-osmo-cli.md)\n- [DynaPictures vs Osmo CLI](https://www.anchorterminal.com/compare/dynapictures-vs-osmo-cli.md)\n- [Adobe Photoshop API vs Bannerbear API + MCP](https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-bannerbear.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": "Bannerbear API + MCP vs DynaPictures",
        "url": ""
      }
    ],
    "description": "Bannerbear scores 59.6 (C) to DynaPictures's 43.2 (E) for design templates. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Bannerbear API + MCP C 59.6",
      "DynaPictures E 43.2",
      "scores"
    ],
    "h1": "Bannerbear API + MCP vs DynaPictures",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/bannerbear-vs-dynapictures",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Bannerbear vs DynaPictures for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/bannerbear-vs-dynapictures"
  },
  "tokens": {
    "markdown": 3950,
    "slim": 1830
  },
  "version": 1
}
