{
  "data": {
    "a": {
      "slug": "abyssale",
      "name": "Abyssale",
      "vendor": "Abyssale SAS",
      "vendorUrl": "https://www.abyssale.com",
      "kind": "http-api",
      "category": "design-assets",
      "summary": "Abyssale is a creative automation platform from Paris that renders designs into images, MP4 video, GIFs, HTML5 banner ads and print PDFs, through a REST API, dynamic image URLs, webhooks, official SDKs and a remote MCP server.",
      "url": "https://www.anchorterminal.com/tools/abyssale",
      "markdownUrl": "https://www.anchorterminal.com/tools/abyssale.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/abyssale.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/abyssale.json",
      "dns": "abyssale.grade.anchorterminal.com",
      "license": "Closed service under the Abyssale terms of service (version 3, 21 July 2026)",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.abyssale.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@abyssale/sdk"
        },
        {
          "registry": "pypi",
          "name": "abyssale"
        }
      ],
      "auth": "mixed",
      "authNotes": "REST uses a workspace API key in the `x-api-key` header, created in Workspace settings; test it with `POST /auth`. The MCP server at mcp.abyssale.com uses OAuth through Auth0 with per-tool scopes (`read:design`, `write:design`, `delete:design`, `import:design`, `generate:banner` and others), checked together with the user's workspace role. The two credentials are separate.",
      "pricing": "paid",
      "pricingNotes": "API and MCP come with Pro at $45 a seat a month ($36 yearly) and above; Start at $15 a seat has neither. Suite $75 a seat adds HTML5 and CMYK print PDF. 14-day free trial with no card. Generation credits are charged per format, 1 per image, 1 per second of video, GIF or HTML5, print PDFs by pixel area. Failed generations cost nothing.",
      "priceSummary": "$45 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "Seat subscriptions with credit balances. No x402, MPP or L402 in the OpenAPI, the developer docs or llms.txt (checked 2026-11-06). An empty balance returns 429 with an id, not a payment requirement.",
        "endpoints": []
      },
      "toolCount": 20,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://developers.abyssale.com/",
      "llmsTxt": "https://developers.abyssale.com/llms.txt",
      "openapi": "https://developers.abyssale.com/api.yaml",
      "registryName": "com.abyssale/mcp",
      "capabilities": [
        "design.render",
        "design.templates",
        "design.brand",
        "image.edit",
        "pdf.generate",
        "video.generate"
      ],
      "tags": [
        "hosted",
        "openapi",
        "llms-txt",
        "mcp",
        "remote-mcp",
        "mcp-registry",
        "oauth",
        "api-key",
        "webhooks",
        "sdk",
        "trial",
        "no-card",
        "eu"
      ],
      "lastRelease": "2026-10-29",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 65.6,
        "grade": "B",
        "agentReady": false,
        "rank": 411,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 3,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 85,
          "maintenance": 85,
          "payments": 35,
          "reliability": 41,
          "schema": 98,
          "security": 55,
          "transparency": 71
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "Abyssale publishes a full OpenAPI file, dated versions, tiered rate limits with Retry-After, one error envelope and per-tool OAuth scopes on its MCP server. API access starts at $45 a seat a month after a 14-day trial, and no status page or published SLA was found.",
        "bestFor": "Multi-format ad creative, video, HTML5 banners and print PDFs from one design, for marketing teams and agencies with an agent in the loop.",
        "strengths": [
          "OpenAPI file, a detailed llms.txt and a dated changelog that lists breaking changes first",
          "Published rate-limit tiers with X-RateLimit headers, Retry-After and distinct 429 ids",
          "MCP scopes per tool group, so a client can read designs without spending credits or deleting",
          "Credit cost per output published to the format, and failed generations aren't charged",
          "Official Node.js and Python SDKs with retry and polling helpers, released October 2026"
        ],
        "weaknesses": [
          "API and MCP need the Pro plan at $45 a seat a month",
          "No status page found, and the SLA is negotiated for Enterprise only",
          "AI training on anonymised customer content is on by default",
          "Design import, the JSON authoring route, is alpha and outside the deprecation policy",
          "No security.txt, disclosure policy or certification found"
        ],
        "agentNotes": [
          "Branch on the error `id`, never the message; `request_rate_limited` means wait Retry-After seconds",
          "Multiply credits by formats before a batch, since 200 products in 6 formats cost 1,200 credits",
          "Ask the MCP user to approve only `read:design` unless the task must generate or change designs",
          "Use asynchronous generation for several formats and deduplicate webhooks on `X-Abyssale-Delivery-Id`",
          "Check `GET /credits` first; it costs nothing and shows both balances"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 65.6
          }
        ],
        "editorialScores": {
          "ergonomics": 85,
          "maintenance": 85,
          "payments": 35,
          "reliability": 41,
          "schema": 98,
          "security": 55,
          "transparency": 69
        },
        "provenanceScore": 72,
        "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": {
        "install": "npm install @abyssale/sdk",
        "http": "curl -X POST https://api.abyssale.com/auth -H \"x-api-key: $ABYSSALE_API_KEY\"",
        "claudeCode": "claude mcp add --transport http --client-id tpc_iJ7LWqVdzR7c7jf21gMqDQ --callback-port 3418 -s user abyssale_prod https://mcp.abyssale.com/mcp"
      },
      "letme": {
        "capability": "https://letme.dev/design.render",
        "tool": "https://letme.dev/abyssale"
      },
      "area": "design-diagrams",
      "unitPrices": [
        {
          "item": "Pro seat (API and MCP)",
          "unit": "seat-month",
          "usd": 45,
          "note": "$36 billed yearly; the Start plan at $15 has no API"
        },
        {
          "item": "Suite seat",
          "unit": "seat-month",
          "usd": 75,
          "note": "$60 billed yearly; adds HTML5 ads and CMYK print PDF"
        }
      ],
      "provenance": {
        "legalEntity": "Abyssale SAS",
        "domain": "abyssale.com",
        "domainRegistered": "2018-07-10",
        "endpointOnVendorDomain": true,
        "terms": "https://www.abyssale.com/terms-of-service",
        "privacy": "https://www.abyssale.com/privacy-policy",
        "statusPage": "",
        "changelog": "https://developers.abyssale.com/rest-api/changelog",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The terms (version 3, 21 July 2026) and the legal notice name ABYSSALE, an SAS at 49 rue de Ponthieu, 75008 Paris, Paris RCS 878 526 573. The terms give share capital as €1,980.00 and the legal notice as €1,902.80.",
          "The terms forbid extracting, scraping or reusing the platform's databases, including the public template database. Public docs and policy pages were read as data.",
          "www.abyssale.com/robots.txt and developers.abyssale.com/robots.txt allow all paths.",
          "/.well-known/security.txt returns 404. No status page was linked from the site or the docs, and status.abyssale.com did not answer.",
          "RDAP gives abyssale.com a registration date of 10 July 2018."
        ],
        "score": 72
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/abyssale.json",
      "live": {
        "slug": "abyssale",
        "probe": {
          "target": "https://api.abyssale.com",
          "method": "get",
          "lastAt": "2026-11-07T18:20:08.122898698Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 152,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 66,
          "p95ms24h": 171,
          "samples24h": 200,
          "samples30d": 200,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "com.abyssale/mcp",
            "version": "1.0.1",
            "seenAt": "2026-11-07T18:16:28.95801333Z"
          },
          {
            "registry": "npm",
            "name": "@abyssale/sdk",
            "version": "1.9.0",
            "seenAt": "2026-11-06T23:02:19.286863658Z"
          },
          {
            "registry": "pypi",
            "name": "abyssale",
            "version": "1.7.0",
            "released": "2026-10-21",
            "seenAt": "2026-11-06T23:02:19.747808303Z"
          }
        ],
        "npmWeekly": 29,
        "pypiWeekly": 49,
        "securityTxt": {
          "url": "https://abyssale.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:00:33.168565397Z"
        },
        "llmsTxt": {
          "url": "https://developers.abyssale.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:31:04.477678741Z"
        },
        "pages": [
          {
            "url": "https://developers.abyssale.com/rest-api/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:03:36.173334461Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1c916e422299"
          },
          {
            "url": "https://www.abyssale.com/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:24:07.939253804Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1756c40b8e19"
          },
          {
            "url": "https://www.abyssale.com/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:24:10.078462035Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "982f9b4f8587"
          }
        ],
        "updatedAt": "2026-11-07T18:20:08.122898698Z"
      }
    },
    "answer": "Abyssale scores 65.6 (B) on agent readiness against Templated API + MCP's 58.8 (C), and leads in 4 of 7 scored categories. Templated API + MCP leads on reliability and transparency \u0026 trust.",
    "b": {
      "slug": "templated",
      "name": "Templated API + MCP",
      "vendor": "Templated",
      "vendorUrl": "https://templated.io",
      "kind": "http-api",
      "category": "design-assets",
      "summary": "Template rendering to JPG, PNG, WebP, multi-page PDF and MP4 (up to 90 seconds at 60 fps) through one POST /v1/render endpoint, plus template, folder, upload and font management.",
      "url": "https://www.anchorterminal.com/tools/templated",
      "markdownUrl": "https://www.anchorterminal.com/tools/templated.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/templated.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/templated.json",
      "dns": "templated.grade.anchorterminal.com",
      "repo": "https://github.com/templated-io/mcp-server-templated",
      "license": "MIT",
      "transports": [
        "http",
        "streamable-http",
        "stdio"
      ],
      "remoteUrl": "https://api.templated.io/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "mcp-server-templated"
        }
      ],
      "auth": "mixed",
      "authNotes": "Bearer API key from the dashboard, with full account access. The hosted MCP signs in with OAuth, or takes ?apiKey= in the URL for automations. The local MCP reads TEMPLATED_API_KEY. The MCP can be scoped by folder or external ID to isolate customers.",
      "pricing": "paid",
      "pricingNotes": "Free trial with 50 credits and no card. Starter $39 a month or $29 billed yearly (1,000 credits, 60 requests a minute), Scale $99 or $79 (5,000 credits, 150 a minute), Enterprise $229 or $179 (25,000 credits, 300 a minute), custom from $500 a month. 1 image or 1 PDF page is 1 credit. Video is width x height x fps x seconds / 50,000,000, so 10 seconds of 1080p at 30 fps is 13 credits (https://templated.io/pricing/).",
      "priceSummary": "$39 / mo",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "Subscription credits only. No x402 in the docs or llms-full.txt (checked 2026-09-30).",
        "endpoints": []
      },
      "toolCount": 25,
      "popularity": {
        "githubStars": 3,
        "npmWeekly": 62,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://templated.io/docs/",
      "llmsTxt": "https://templated.io/llms.txt",
      "registryName": "io.github.templated-io/mcp-server-templated",
      "capabilities": [
        "design.templates",
        "design.render",
        "video.render"
      ],
      "tags": [
        "hosted",
        "mcp",
        "llms-txt",
        "no-card",
        "async-jobs",
        "webhooks"
      ],
      "lastRelease": "2026-10-08",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 58.8,
        "grade": "C",
        "agentReady": false,
        "rank": 726,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 5,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 70,
          "maintenance": 80,
          "payments": 35,
          "reliability": 65,
          "schema": 74,
          "security": 42,
          "transparency": 76
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-02"
        },
        "negative": -3,
        "negativeNotes": [
          "-3, 8 October 2026. mcp-server-templated 1.9.0, a minor release with no advance notice found, rejects layer names a template doesn't have before rendering, and `layers` sent with `pages` (the API docs say `layers` is then ignored), so create_render calls that rendered and were charged on 1.8.0 now fail. The tag's commit message is the only record (https://github.com/templated-io/mcp-server-templated/commit/7b50f47bcab07677e2566317e85c490df61fec54)"
        ],
        "verdict": "Templated's MIT-licensed MCP server has 25 tools, each annotated with readOnlyHint and destructiveHint, and can be fenced to one folder or customer. The REST key has full account access, the MCP docs still document it as ?apiKey= in the URL, and MCP 1.9.0 began rejecting calls 1.8.0 accepted with no notice.",
        "bestFor": "Agents and SaaS builders who render images, PDFs and short MP4s from templates and want a well-behaved MCP server they can fence per customer.",
        "strengths": [
          "MIT-licensed MCP server with 25 tools, every one annotated with readOnlyHint and destructiveHint",
          "Listed in the official MCP registry, with 1.9.0 published from CI by GitHub OIDC on 8 October 2026",
          "llms.txt, llms-full.txt and a Markdown version of every page, including the price list with rate limits per plan",
          "MCP 1.9.0 turns API errors into next steps, such as which list tool to call for a missing ID",
          "MCP can be locked to one folder or external ID for customer-facing use"
        ],
        "weaknesses": [
          "One API key with full account access, and the MCP docs document it as ?apiKey= in the URL",
          "No OpenAPI, and no 429 handling in the API docs. Error tables cover five endpoints, not create render",
          "No official SDKs, only code samples",
          "MCP 1.9.0 began rejecting renders with unknown layer names, or with both `layers` and `pages`, with no advance notice",
          "AI functions send content to Gemini, OpenAI, Anthropic and DeepSeek per the privacy policy"
        ],
        "agentNotes": [
          "Call get_template_layers before create_render. MCP 1.9.0 rejects layer names the template doesn't have",
          "Set async true with a webhook_url for MP4, zip or batch renders, since zip without a webhook returns 400",
          "Video credits are width x height x fps x seconds / 50,000,000, so 10 seconds of 1080p at 30 fps costs 13",
          "Pass folderId or externalId on the MCP URL when one server serves several customers",
          "On a 429 wait for Retry-After when present and send batch calls one at a time. The API docs give no retry guidance"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 4,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 58.8
          }
        ],
        "editorialScores": {
          "ergonomics": 70,
          "maintenance": 80,
          "payments": 35,
          "reliability": 65,
          "schema": 74,
          "security": 42,
          "transparency": 61
        },
        "provenanceScore": 91,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-02",
            "maintenance": "2026-11-02",
            "payments": "2026-11-02",
            "reliability": "2026-11-02",
            "schema": "2026-11-02",
            "security": "2026-11-02",
            "transparency": "2026-11-02"
          },
          "last": "2026-11-02",
          "lastMoved": "2026-11-02",
          "oldest": "2026-11-02",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl https://api.templated.io/v1/account -H \"Authorization: Bearer $TEMPLATED_API_KEY\"",
        "claudeCode": "claude mcp add --transport http templated https://mcp.templated.io/mcp",
        "config": {
          "mcpServers": {
            "templated": {
              "args": [
                "mcp-server-templated"
              ],
              "command": "npx",
              "env": {
                "TEMPLATED_API_KEY": "${TEMPLATED_API_KEY}"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/design.templates",
        "tool": "https://letme.dev/templated"
      },
      "area": "design-diagrams",
      "unitPrices": [
        {
          "item": "Starter",
          "unit": "month",
          "usd": 39,
          "note": "1,000 credits, $29 a month billed yearly"
        },
        {
          "item": "Scale",
          "unit": "month",
          "usd": 99,
          "note": "5,000 credits, $79 a month billed yearly"
        },
        {
          "item": "Enterprise",
          "unit": "month",
          "usd": 229,
          "note": "25,000 credits, $179 a month billed yearly"
        }
      ],
      "provenance": {
        "legalEntity": "Fields Apps LTDA",
        "domain": "templated.io",
        "domainRegistered": "2023-11-13",
        "endpointOnVendorDomain": true,
        "terms": "https://templated.io/terms/",
        "privacy": "https://templated.io/privacy/",
        "statusPage": "https://status.templated.io",
        "changelog": "https://templated.io/changelog/",
        "securityTxt": "valid",
        "checked": "2026-11-02",
        "score": 91
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/templated.json",
      "live": {
        "slug": "templated",
        "probe": {
          "target": "https://api.templated.io/v1",
          "method": "get",
          "lastAt": "2026-11-07T18:20:59.283598226Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 408,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 397,
          "p95ms24h": 502,
          "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": 250,
              "ok": 250
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.templated.io",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-07T04:48:51.829427572Z"
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "io.github.templated-io/mcp-server-templated",
            "version": "1.9.0",
            "seenAt": "2026-11-07T18:16:28.95801333Z"
          },
          {
            "registry": "npm",
            "name": "mcp-server-templated",
            "version": "1.9.0",
            "seenAt": "2026-11-07T00:10:43.303651038Z"
          }
        ],
        "githubStars": 3,
        "npmWeekly": 83,
        "securityTxt": {
          "url": "https://templated.io/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-10-08T00:00:00.000Z",
          "checkedAt": "2026-11-07T16:00:06.654551276Z"
        },
        "llmsTxt": {
          "url": "https://templated.io/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:34:06.909454564Z"
        },
        "domain": {
          "domain": "templated.io",
          "checkedAt": "2026-11-01T14:24:50.055557925Z"
        },
        "pages": [
          {
            "url": "https://feedback.templated.io/changelog",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-11-04T08:23:53.510667973Z",
            "changedAt": "2026-10-28T04:17:57.080186519Z",
            "fingerprint": "a4282626df2d"
          },
          {
            "url": "https://templated.io/changelog/",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-11-07T14:21:59.79321814Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "a4282626df2d"
          },
          {
            "url": "https://templated.io/pricing/",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-11-07T14:22:02.063812867Z",
            "changedAt": "2026-10-28T04:45:05.453657396Z",
            "fingerprint": "e4d8862f8143"
          },
          {
            "url": "https://templated.io/privacy/",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-11-07T14:22:04.092435491Z",
            "changedAt": "2026-10-28T04:45:07.749121998Z",
            "fingerprint": "954d5276433a"
          },
          {
            "url": "https://templated.io/terms/",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-11-07T14:22:06.108841922Z",
            "changedAt": "2026-10-28T04:45:09.80136904Z",
            "fingerprint": "ea54a342875f"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.templated.io/mcp",
          "checkedAt": "2026-11-07T01:48:35.379126483Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-11-07T01:48:35.379126483Z"
        },
        "github": {
          "repo": "templated-io/mcp-server-templated",
          "checkedAt": "2026-11-02T09:30:41.8990944Z",
          "stars": 3,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-14T19:46:16Z",
          "openIssues": 0,
          "openPRs": 0,
          "issuesOpened90d": 0,
          "issuesClosed90d": 0,
          "prsMerged90d": 0
        },
        "updatedAt": "2026-11-07T18:20:59.283598226Z"
      }
    },
    "edges": [
      {
        "by": 24,
        "category": "reliability",
        "leads": "templated",
        "name": "Reliability",
        "reasons": {
          "a": "Hosted lines, for the REST API and the remote MCP server. No status page was linked from the site or the docs, and status.abyssale.com did not answer (0). No readable incident history (5). Rate limits published in full, 10 requests a second globally and per-workspace tiers with per-minute and per-hour budgets (15). 429s carry Retry-After and X-RateLimit headers, three 429 ids say which limit was hit, failed generations cost nothing, and webhooks carry a delivery id to deduplicate on. No idempotency key on generation requests (13 of 15). The terms promise best-effort availability and leave SLAs to Enterprise contracts, so none is published (0). Generation and the MCP server are generally available, while Design Import, the JSON authoring route, is labelled alpha (8 of 10). 0 + 5 + 15 + 13 + 0 + 8 = 41.",
          "b": "Better Stack status page with API, App and Website components over 30, 60 and 90 days (20). The incidents page lists no incident for September, October or November 2026 and the RSS feed holds no entry, so the page has never posted one. This run scores a page that has never posted an incident 20, not the 30 of a clean record, and the page's own figure for the API is 100 per cent over 90 days (20). Rate limits per plan in the Markdown price list, 60, 150 and 300 requests a minute (15). No 429 behaviour, Retry-After or retry advice in the API docs or llms-full.txt. MCP 1.9.0 tells the model to wait and retry after a 429, which isn't API documentation (0). The pricing page lists \"SLA \u0026 dedicated support\" on the custom plan from $500 a month, with no SLA document or figure found (0). The render API is GA. Video launched on 7 January 2026 as \"now live\" (10). 20 + 20 + 15 + 0 + 0 + 10 = 65."
        },
        "scores": {
          "a": 41,
          "b": 65
        }
      },
      {
        "by": 24,
        "category": "schema",
        "leads": "abyssale",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "A 424 KB OpenAPI file at developers.abyssale.com/api.yaml with 34 operations, from which the reference pages are generated (25). A detailed llms.txt that states the base URL, auth, rate limits, error envelope and webhook signing up front (10). Pages say what each endpoint is for and when to use another, such as synchronous versus asynchronous generation and designs versus workspace templates, and the MCP permissions page says what each tool can break (19 of 20). Typed parameters with enums, ranges and required fields across layers and formats (14 of 15). One error envelope everywhere, an error catalogue with machine-readable ids and what to do for each, and worked examples (15). Date-based versions named in every response and a dated changelog in Keep a Changelog form with a Breaking section first; the MCP server has its own semver changelog (15). 25 + 10 + 19 + 14 + 15 + 15 = 98.",
          "b": "No OpenAPI. All 25 MCP tools carry typed JSON Schema inputs, and server.json is published to the MCP registry, so partial credit (18). llms.txt, llms-small.txt, llms-full.txt, pricing.md and a Markdown version of every page (10). Some MCP descriptions guide the model well (update_template explains pages versus layers, create_render names get_template_layers first), others are one line (12). Format and layer type enums and a required template field, and MCP 1.9.0 caps list limits at 100 in the schema, but size, scale and fps limits sit in prose rather than min and max, and `layers` is an open object (10). Request and response examples per endpoint. Error tables with status codes appear on five endpoints (font, render, template and upload deletes and template update), none on create render (9). Versioned /v1 path, a dated changelog now at templated.io/changelog/ and tagged MCP releases (15). 18 + 10 + 12 + 10 + 9 + 15 = 74."
        },
        "scores": {
          "a": 98,
          "b": 74
        }
      },
      {
        "by": 15,
        "category": "ergonomics",
        "leads": "abyssale",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "20 MCP tools (15 for 11 to 30), plus 5 because OAuth scopes per tool group let a client be approved for reads only (20 of 25). Design listings search by words in any order, filter by project, orientation, size, format and dates, sort and order, and say honestly when a page is past the end; listing tools refuse unsupported options rather than ignore them, per MCP 1.2.0 (19 of 20). One envelope with an `id` to branch on, and error docs that say which errors a retry never fixes (19 of 20). The permissions page marks each tool read-only, mutating or destructive, but MCP annotations couldn't be confirmed on the closed server, and generation has no idempotency key (12 of 20). Official Node.js and Python SDKs with retry behaviour and polling helpers (15). 20 + 19 + 19 + 12 + 15 = 85.",
          "b": "25 MCP tools (15), plus results passed through field allowlists, and MCP 1.9.0 prunes JSON results (get_template_layers about 78 per cent smaller by the release note) (3). Lists take page and limit, default 25 and at most 100 in the MCP, and the MCP can filter to one folder or external ID (17). The API docs give status tables on five endpoints. MCP 1.9.0 (8 October 2026) turns each status into an instruction, such as calling the list tool for a missing ID, reconnecting on 401 or waiting for Retry-After on 429, and rejects unknown layer names before rendering (12). Every tool carries readOnlyHint and destructiveHint, with deletes and template updates marked destructive. No idempotency key (15). Only `template` is required and renders are synchronous by default, but there are no official SDKs, only code samples in JavaScript, Python and PHP (8). 18 + 17 + 12 + 15 + 8 = 70."
        },
        "scores": {
          "a": 85,
          "b": 70
        }
      },
      {
        "by": 13,
        "category": "security",
        "leads": "abyssale",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "The MCP server uses OAuth through Auth0 with scopes per tool group (`read:design`, `write:design`, `delete:design`, `import:design`, `generate:banner`, `read:credits` and others), enforced alongside the user's workspace role, and approval is per client connection. The REST API uses a workspace `x-api-key` with no scopes documented (28 of 30). A client can be approved for reads only, and deleting needs its own scope, but nothing on the server asks for confirmation; the docs leave that to the client per the MCP spec (17 of 20). Tools return the workspace's own designs and fonts; image layers can point at outside URLs (10 of 15). No audit log or per-call record was found (0). No security.txt, disclosure policy, bug bounty or certification found (0). 28 + 17 + 10 + 0 + 0 = 55.",
          "b": "The REST key has full account access by the docs' own words, and the privacy policy says it can be regenerated. The hosted MCP is an OAuth 2.1 resource server since MCP 1.6.0 (18). The MCP setup guide still documents ?apiKey= in the server URL for automations, less 10 (8). Folder and external ID scoping is enforced server side, and destructive tools are annotated so clients can ask first. No read-only key (12). Tool results pass through allowlists, and the docs describe server-side scoping as a guard against prompt injection (12). No audit log or per-call log found for the customer beyond the render list (3). A valid security.txt since 28 October 2026 (Last-Modified), sending reports to support@templated.io and expiring 8 October 2027, and 2FA since September 2026. No certification or bug bounty found (7, as a valid security.txt to a support address with nothing else). 8 + 12 + 12 + 3 + 7 = 42."
        },
        "scores": {
          "a": 55,
          "b": 42
        }
      },
      {
        "by": 5,
        "category": "maintenance",
        "leads": "abyssale",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "API version v2026-10-29, eight days before this check (30). Fifteen dated API versions between 21 August and 29 October, MCP server releases 1.0.0 (1 September) to 1.2.0 (7 October), and SDK releases in October (20). Closed service with a changelog and RSS feed, help@abyssale.com and in-app chat, which we didn't test (12 of 15). com.abyssale/mcp is in the official MCP registry under a domain-verified namespace, and the Node.js (1.9.0) and Python (1.7.0) SDKs were both released on 21 October 2026 (15). Both SDKs are current; their repositories weren't read (8 of 10). 30 + 20 + 12 + 15 + 8 = 85.",
          "b": "mcp-server-templated v1.9.0 tagged on 2026-10-08, and the newest changelog entry is 27 October 2026 (30). Six MCP tags in the 90 days from 4 August (v1.4.0 and v1.4.1 on 5 August, v1.7.0 and v1.7.1 on 8 September, v1.8.0 on 6 October, v1.9.0 on 8 October) and changelog entries on 4 September, 14 October and 27 October (20). Dated public changelog and support by email. GitHub issue response wasn't checked (github.com refuses our requests) (10). Listed in the official MCP registry as io.github.templated-io/mcp-server-templated, with 1.9.0 published on 8 October by GitHub OIDC from CI (15). @modelcontextprotocol/sdk 1.32.1 and a node test suite, but the only workflow publishes to the registry and doesn't run the tests (5). 30 + 20 + 10 + 15 + 5 = 80."
        },
        "scores": {
          "a": 85,
          "b": 80
        }
      },
      {
        "by": 5,
        "category": "transparency",
        "leads": "templated",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service under terms of service version 3 of 21 July 2026, from a Paris SAS with its register number (15). The privacy policy and terms agree on EU hosting on AWS Ireland, deletion timelines and breach notice within 72 hours, but AI model training on anonymised customer content is on by default with a workspace opt-out, and anonymised data may be kept indefinitely (20 of 30). The changelog has Deprecated and Removed sections and refers to a deprecation policy that covers stable endpoints but not alpha ones; the policy's notice period wasn't found (14 of 20). Subprocessors named with locations, among them AWS Ireland, Auth0, Brevo, Intercom and AI providers including OpenAI, Anthropic, Black Forest Labs and Google, some outside the EEA (20). 15 + 20 + 14 + 20 = 69.",
          "b": "MCP server MIT with a `LICENSE` file. The rendering service is closed under published terms (18). Privacy policy updated 18 October 2026 with retention stated per data type (until you delete, files purged within 90 days of deletion, logs up to 90 days, billing records five years) and a DPA at templated.io/dpa, though it doesn't say whether customer content trains models (25). No deprecation policy or dated deprecation notices found (0). Subprocessors named by purpose, including Gemini, OpenAI, Anthropic and DeepSeek for AI functions, Photoroom for background removal, PostHog and Plausible for analytics and Stripe, Creem and Spedy for payments (18). 18 + 25 + 0 + 18 = 61."
        },
        "scores": {
          "a": 71,
          "b": 76
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Abyssale SAS",
        "b": "Templated",
        "name": "Vendor"
      },
      {
        "a": "https://api.abyssale.com",
        "b": "https://api.templated.io/v1",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP, Streamable HTTP, stdio",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Closed service under the Abyssale terms of service (version 3, 21 July 2026)",
        "b": "MIT",
        "name": "Licence"
      },
      {
        "a": "20",
        "b": "25",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "com.abyssale/mcp",
        "b": "io.github.templated-io/mcp-server-templated",
        "name": "MCP registry"
      },
      {
        "a": "2026-10-29",
        "b": "2026-10-08",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "2026-01-10",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2026-09-08",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "none",
        "b": "3 stars, 62 npm/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "4/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Abyssale scores 65.6 (B) on agent readiness against Templated API + MCP's 58.8 (C), and leads in 4 of 7 scored categories. Templated API + MCP leads on reliability and transparency \u0026 trust.",
        "question": "Which is better for AI agents, Abyssale or Templated API + MCP?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Abyssale and Templated API + MCP need an API key?"
      },
      {
        "answer": "Yes. Abyssale has a hosted endpoint at https://api.abyssale.com and Templated API + MCP at https://api.templated.io/v1.",
        "question": "Can an agent call Abyssale and Templated API + MCP without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 98 against 74",
          "Agent ergonomics, 85 against 70",
          "Security \u0026 auth, 55 against 42",
          "Maintenance \u0026 community, 85 against 80"
        ],
        "also": [
          "No incidents deducted, where Templated API + MCP loses 3 points for them"
        ],
        "goodFor": "Multi-format ad creative, video, HTML5 banners and print PDFs from one design, for marketing teams and agencies with an agent in the loop.",
        "slug": "abyssale",
        "watchFor": "API and MCP need the Pro plan at $45 a seat a month"
      },
      {
        "aheadOn": [
          "Reliability, 65 against 41",
          "Transparency \u0026 trust, 76 against 71"
        ],
        "also": [
          "Runs on your own machine"
        ],
        "goodFor": "Agents and SaaS builders who render images, PDFs and short MP4s from templates and want a well-behaved MCP server they can fence per customer.",
        "slug": "templated",
        "watchFor": "One API key with full account access, and the MCP docs document it as ?apiKey= in the URL"
      }
    ],
    "history": {
      "abyssale": null,
      "templated": [
        {
          "causes": [
            "security",
            "product",
            "evidence",
            "correction",
            "event"
          ],
          "date": "2026-11-02",
          "delta": -2.5,
          "from": 61.3,
          "fromGrade": "C",
          "to": 58.8,
          "toGrade": "C"
        },
        {
          "causes": [
            "evidence"
          ],
          "date": "2026-10-28",
          "delta": 0.1,
          "from": 61.2,
          "fromGrade": "C",
          "to": 61.3,
          "toGrade": "C"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-08",
          "delta": -0.1,
          "from": 61.3,
          "fromGrade": "C",
          "to": 61.2,
          "toGrade": "C"
        }
      ]
    },
    "job": {
      "capability": "design.render",
      "name": "Design rendering"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-templated.json",
        "title": "Adobe Photoshop API vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-templated.json",
        "title": "APITemplate.io vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bannerbear-vs-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-templated.json",
        "title": "Canva REST APIs + MCP vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/canva-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/contentdrips-vs-templated.json",
        "title": "Contentdrips API and MCP vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/contentdrips-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/creatomate-vs-templated.json",
        "title": "Creatomate vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/creatomate-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-templated.json",
        "title": "DynaPictures vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/layerre-vs-templated.json",
        "title": "Layerre vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/layerre-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/photoroom-vs-templated.json",
        "title": "Photoroom API vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/photoroom-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pixelixe-vs-templated.json",
        "title": "Pixelixe vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/pixelixe-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/placid-vs-templated.json",
        "title": "Placid API + MCP vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/placid-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/postnitro-vs-templated.json",
        "title": "PostNitro vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/postnitro-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/robolly-vs-templated.json",
        "title": "Robolly vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/robolly-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/shotstack-vs-templated.json",
        "title": "Shotstack vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/shotstack-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-adobe-photoshop-api.json",
        "title": "Abyssale vs Adobe Photoshop API",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-adobe-photoshop-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-apitemplate-io.json",
        "title": "Abyssale vs APITemplate.io",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-apitemplate-io"
      },
      {
        "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-canva.json",
        "title": "Abyssale vs Canva REST APIs + MCP",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-canva"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-contentdrips.json",
        "title": "Abyssale vs Contentdrips API and MCP",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-contentdrips"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-creatomate.json",
        "title": "Abyssale vs Creatomate",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-creatomate"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-dynapictures.json",
        "title": "Abyssale vs DynaPictures",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-dynapictures"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-layerre.json",
        "title": "Abyssale vs Layerre",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-layerre"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-osmo-cli.json",
        "title": "Abyssale vs Osmo CLI",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-osmo-cli"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-pictify.json",
        "title": "Abyssale vs Pictify",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-pictify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-pixelixe.json",
        "title": "Abyssale vs Pixelixe",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-pixelixe"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-placid.json",
        "title": "Abyssale vs Placid API + MCP",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-placid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-postnitro.json",
        "title": "Abyssale vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-robolly.json",
        "title": "Abyssale vs Robolly",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-robolly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-shotstack.json",
        "title": "Abyssale vs Shotstack",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-shotstack"
      },
      {
        "json": "https://www.anchorterminal.com/compare/osmo-cli-vs-templated.json",
        "title": "Osmo CLI vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/osmo-cli-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pictify-vs-templated.json",
        "title": "Pictify vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/pictify-vs-templated"
      },
      {
        "json": "https://www.anchorterminal.com/compare/abyssale-vs-photoroom.json",
        "title": "Abyssale vs Photoroom API",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-photoroom"
      }
    ],
    "panel": null,
    "scores": [
      {
        "abyssale": 41,
        "by": 24,
        "edge": "templated",
        "key": "reliability",
        "name": "Reliability",
        "templated": 65,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "abyssale": 98,
        "by": 24,
        "edge": "abyssale",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "templated": 74,
        "weight": 13
      },
      {
        "abyssale": 85,
        "by": 15,
        "edge": "abyssale",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "templated": 70,
        "weight": 13
      },
      {
        "abyssale": 55,
        "by": 13,
        "edge": "abyssale",
        "key": "security",
        "name": "Security \u0026 auth",
        "templated": 42,
        "weight": 14
      },
      {
        "abyssale": 35,
        "by": 0,
        "edge": "",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "templated": 35,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "abyssale": 85,
        "by": 5,
        "edge": "abyssale",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "templated": 80,
        "weight": 7
      },
      {
        "abyssale": 71,
        "by": 5,
        "edge": "templated",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "templated": 76,
        "weight": 7
      }
    ],
    "summary": "Abyssale scores 65.6 (B) on agent readiness against Templated API + MCP's 58.8 (C), and leads in 4 of 7 scored categories. Templated API + MCP leads on reliability and transparency \u0026 trust. Both do design rendering.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "abyssale": "Abyssale publishes a full OpenAPI file, dated versions, tiered rate limits with Retry-After, one error envelope and per-tool OAuth scopes on its MCP server. API access starts at $45 a seat a month after a 14-day trial, and no status page or published SLA was found.",
      "templated": "Templated's MIT-licensed MCP server has 25 tools, each annotated with readOnlyHint and destructiveHint, and can be fenced to one folder or customer. The REST key has full account access, the MCP docs still document it as ?apiKey= in the URL, and MCP 1.9.0 began rejecting calls 1.8.0 accepted with no notice."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/abyssale-vs-templated",
    "json": "https://www.anchorterminal.com/compare/abyssale-vs-templated.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/abyssale-vs-templated.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/abyssale-vs-templated.min.md"
  },
  "markdown": "Abyssale scores 65.6 (B) on agent readiness against Templated API + MCP's 58.8 (C), and leads in 4 of 7 scored categories. Templated API + MCP leads on reliability and transparency \u0026 trust. Both do design rendering.\n\n- Abyssale: grade B, 65.6/100, rank #411 of 1486. Markdown https://www.anchorterminal.com/tools/abyssale.md · JSON https://www.anchorterminal.com/api/v1/tools/abyssale.json\n- Templated API + MCP: grade C, 58.8/100, rank #726 of 1486. Markdown https://www.anchorterminal.com/tools/templated.md · JSON https://www.anchorterminal.com/api/v1/tools/templated.json\n- Best programmatic image and design asset APIs for AI agents: https://www.anchorterminal.com/best/design-assets/index.md\n- All 153 assets comparisons: https://www.anchorterminal.com/compare/design-assets/index.md\n\n## Which one, for what\n\n### Abyssale (B)\n\nGood for: Multi-format ad creative, video, HTML5 banners and print PDFs from one design, for marketing teams and agencies with an agent in the loop.\n\nAhead on:\n- Schema \u0026 documentation, 98 against 74\n- Agent ergonomics, 85 against 70\n- Security \u0026 auth, 55 against 42\n- Maintenance \u0026 community, 85 against 80\n\nAlso in its favour:\n- No incidents deducted, where Templated API + MCP loses 3 points for them\n\nWatch for: API and MCP need the Pro plan at $45 a seat a month\n\n### Templated API + MCP (C)\n\nGood for: Agents and SaaS builders who render images, PDFs and short MP4s from templates and want a well-behaved MCP server they can fence per customer.\n\nAhead on:\n- Reliability, 65 against 41\n- Transparency \u0026 trust, 76 against 71\n\nAlso in its favour:\n- Runs on your own machine\n\nWatch for: One API key with full account access, and the MCP docs document it as ?apiKey= in the URL\n\n\n## Why the edge\n\n### Reliability: Templated API + MCP +24\n\n- Abyssale (41): Hosted lines, for the REST API and the remote MCP server. No status page was linked from the site or the docs, and status.abyssale.com did not answer (0). No readable incident history (5). Rate limits published in full, 10 requests a second globally and per-workspace tiers with per-minute and per-hour budgets (15). 429s carry Retry-After and X-RateLimit headers, three 429 ids say which limit was hit, failed generations cost nothing, and webhooks carry a delivery id to deduplicate on. No idempotency key on generation requests (13 of 15). The terms promise best-effort availability and leave SLAs to Enterprise contracts, so none is published (0). Generation and the MCP server are generally available, while Design Import, the JSON authoring route, is labelled alpha (8 of 10). 0 + 5 + 15 + 13 + 0 + 8 = 41.\n- Templated API + MCP (65): Better Stack status page with API, App and Website components over 30, 60 and 90 days (20). The incidents page lists no incident for September, October or November 2026 and the RSS feed holds no entry, so the page has never posted one. This run scores a page that has never posted an incident 20, not the 30 of a clean record, and the page's own figure for the API is 100 per cent over 90 days (20). Rate limits per plan in the Markdown price list, 60, 150 and 300 requests a minute (15). No 429 behaviour, Retry-After or retry advice in the API docs or llms-full.txt. MCP 1.9.0 tells the model to wait and retry after a 429, which isn't API documentation (0). The pricing page lists \"SLA \u0026 dedicated support\" on the custom plan from $500 a month, with no SLA document or figure found (0). The render API is GA. Video launched on 7 January 2026 as \"now live\" (10). 20 + 20 + 15 + 0 + 0 + 10 = 65.\n\n### Schema \u0026 documentation: Abyssale +24\n\n- Abyssale (98): A 424 KB OpenAPI file at developers.abyssale.com/api.yaml with 34 operations, from which the reference pages are generated (25). A detailed llms.txt that states the base URL, auth, rate limits, error envelope and webhook signing up front (10). Pages say what each endpoint is for and when to use another, such as synchronous versus asynchronous generation and designs versus workspace templates, and the MCP permissions page says what each tool can break (19 of 20). Typed parameters with enums, ranges and required fields across layers and formats (14 of 15). One error envelope everywhere, an error catalogue with machine-readable ids and what to do for each, and worked examples (15). Date-based versions named in every response and a dated changelog in Keep a Changelog form with a Breaking section first; the MCP server has its own semver changelog (15). 25 + 10 + 19 + 14 + 15 + 15 = 98.\n- Templated API + MCP (74): No OpenAPI. All 25 MCP tools carry typed JSON Schema inputs, and server.json is published to the MCP registry, so partial credit (18). llms.txt, llms-small.txt, llms-full.txt, pricing.md and a Markdown version of every page (10). Some MCP descriptions guide the model well (update_template explains pages versus layers, create_render names get_template_layers first), others are one line (12). Format and layer type enums and a required template field, and MCP 1.9.0 caps list limits at 100 in the schema, but size, scale and fps limits sit in prose rather than min and max, and `layers` is an open object (10). Request and response examples per endpoint. Error tables with status codes appear on five endpoints (font, render, template and upload deletes and template update), none on create render (9). Versioned /v1 path, a dated changelog now at templated.io/changelog/ and tagged MCP releases (15). 18 + 10 + 12 + 10 + 9 + 15 = 74.\n\n### Agent ergonomics: Abyssale +15\n\n- Abyssale (85): 20 MCP tools (15 for 11 to 30), plus 5 because OAuth scopes per tool group let a client be approved for reads only (20 of 25). Design listings search by words in any order, filter by project, orientation, size, format and dates, sort and order, and say honestly when a page is past the end; listing tools refuse unsupported options rather than ignore them, per MCP 1.2.0 (19 of 20). One envelope with an `id` to branch on, and error docs that say which errors a retry never fixes (19 of 20). The permissions page marks each tool read-only, mutating or destructive, but MCP annotations couldn't be confirmed on the closed server, and generation has no idempotency key (12 of 20). Official Node.js and Python SDKs with retry behaviour and polling helpers (15). 20 + 19 + 19 + 12 + 15 = 85.\n- Templated API + MCP (70): 25 MCP tools (15), plus results passed through field allowlists, and MCP 1.9.0 prunes JSON results (get_template_layers about 78 per cent smaller by the release note) (3). Lists take page and limit, default 25 and at most 100 in the MCP, and the MCP can filter to one folder or external ID (17). The API docs give status tables on five endpoints. MCP 1.9.0 (8 October 2026) turns each status into an instruction, such as calling the list tool for a missing ID, reconnecting on 401 or waiting for Retry-After on 429, and rejects unknown layer names before rendering (12). Every tool carries readOnlyHint and destructiveHint, with deletes and template updates marked destructive. No idempotency key (15). Only `template` is required and renders are synchronous by default, but there are no official SDKs, only code samples in JavaScript, Python and PHP (8). 18 + 17 + 12 + 15 + 8 = 70.\n\n### Security \u0026 auth: Abyssale +13\n\n- Abyssale (55): The MCP server uses OAuth through Auth0 with scopes per tool group (`read:design`, `write:design`, `delete:design`, `import:design`, `generate:banner`, `read:credits` and others), enforced alongside the user's workspace role, and approval is per client connection. The REST API uses a workspace `x-api-key` with no scopes documented (28 of 30). A client can be approved for reads only, and deleting needs its own scope, but nothing on the server asks for confirmation; the docs leave that to the client per the MCP spec (17 of 20). Tools return the workspace's own designs and fonts; image layers can point at outside URLs (10 of 15). No audit log or per-call record was found (0). No security.txt, disclosure policy, bug bounty or certification found (0). 28 + 17 + 10 + 0 + 0 = 55.\n- Templated API + MCP (42): The REST key has full account access by the docs' own words, and the privacy policy says it can be regenerated. The hosted MCP is an OAuth 2.1 resource server since MCP 1.6.0 (18). The MCP setup guide still documents ?apiKey= in the server URL for automations, less 10 (8). Folder and external ID scoping is enforced server side, and destructive tools are annotated so clients can ask first. No read-only key (12). Tool results pass through allowlists, and the docs describe server-side scoping as a guard against prompt injection (12). No audit log or per-call log found for the customer beyond the render list (3). A valid security.txt since 28 October 2026 (Last-Modified), sending reports to support@templated.io and expiring 8 October 2027, and 2FA since September 2026. No certification or bug bounty found (7, as a valid security.txt to a support address with nothing else). 8 + 12 + 12 + 3 + 7 = 42.\n\n### Maintenance \u0026 community: Abyssale +5\n\n- Abyssale (85): API version v2026-10-29, eight days before this check (30). Fifteen dated API versions between 21 August and 29 October, MCP server releases 1.0.0 (1 September) to 1.2.0 (7 October), and SDK releases in October (20). Closed service with a changelog and RSS feed, help@abyssale.com and in-app chat, which we didn't test (12 of 15). com.abyssale/mcp is in the official MCP registry under a domain-verified namespace, and the Node.js (1.9.0) and Python (1.7.0) SDKs were both released on 21 October 2026 (15). Both SDKs are current; their repositories weren't read (8 of 10). 30 + 20 + 12 + 15 + 8 = 85.\n- Templated API + MCP (80): mcp-server-templated v1.9.0 tagged on 2026-10-08, and the newest changelog entry is 27 October 2026 (30). Six MCP tags in the 90 days from 4 August (v1.4.0 and v1.4.1 on 5 August, v1.7.0 and v1.7.1 on 8 September, v1.8.0 on 6 October, v1.9.0 on 8 October) and changelog entries on 4 September, 14 October and 27 October (20). Dated public changelog and support by email. GitHub issue response wasn't checked (github.com refuses our requests) (10). Listed in the official MCP registry as io.github.templated-io/mcp-server-templated, with 1.9.0 published on 8 October by GitHub OIDC from CI (15). @modelcontextprotocol/sdk 1.32.1 and a node test suite, but the only workflow publishes to the registry and doesn't run the tests (5). 30 + 20 + 10 + 15 + 5 = 80.\n\n### Transparency \u0026 trust: Templated API + MCP +5\n\n- Abyssale (71): Closed service under terms of service version 3 of 21 July 2026, from a Paris SAS with its register number (15). The privacy policy and terms agree on EU hosting on AWS Ireland, deletion timelines and breach notice within 72 hours, but AI model training on anonymised customer content is on by default with a workspace opt-out, and anonymised data may be kept indefinitely (20 of 30). The changelog has Deprecated and Removed sections and refers to a deprecation policy that covers stable endpoints but not alpha ones; the policy's notice period wasn't found (14 of 20). Subprocessors named with locations, among them AWS Ireland, Auth0, Brevo, Intercom and AI providers including OpenAI, Anthropic, Black Forest Labs and Google, some outside the EEA (20). 15 + 20 + 14 + 20 = 69.\n- Templated API + MCP (76): MCP server MIT with a `LICENSE` file. The rendering service is closed under published terms (18). Privacy policy updated 18 October 2026 with retention stated per data type (until you delete, files purged within 90 days of deletion, logs up to 90 days, billing records five years) and a DPA at templated.io/dpa, though it doesn't say whether customer content trains models (25). No deprecation policy or dated deprecation notices found (0). Subprocessors named by purpose, including Gemini, OpenAI, Anthropic and DeepSeek for AI functions, Photoroom for background removal, PostHog and Plausible for analytics and Stripe, Creem and Spedy for payments (18). 18 + 25 + 0 + 18 = 61.\n\n## Score by category\n\n| Category | Weight | Abyssale | Templated API + MCP | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 41 | 65 | Templated API + MCP +24 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 98 | 74 | Abyssale +24 |\n| Agent ergonomics | 13% (16.2 this run) | 85 | 70 | Abyssale +15 |\n| Security \u0026 auth | 14% (17.5 this run) | 55 | 42 | Abyssale +13 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 35 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 85 | 80 | Abyssale +5 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 71 | 76 | Templated API + MCP +5 |\n| Negative events | ≤15 | 0 | -3 | |\n| **Total** | | **65.6 · B** | **58.8 · C** | |\n\n## Facts side by side\n\n| Fact | Abyssale | Templated API + MCP |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Abyssale SAS | Templated |\n| Hosted endpoint | `https://api.abyssale.com` | `https://api.templated.io/v1` |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP, stdio |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Paid | Paid |\n| x402 | no | no |\n| Licence | Closed service under the Abyssale terms of service (version 3, 21 July 2026) | MIT |\n| Tools exposed | 20 | 25 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| MCP registry | `com.abyssale/mcp` | `io.github.templated-io/mcp-server-templated` |\n| Last release | 2026-10-29 | 2026-10-08 |\n| Terms last updated | no date given | 2026-01-10 |\n| Privacy policy last updated | no date given | 2026-09-08 |\n| Customer content may train models | yes | not found in the text |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | none | 3 stars, 62 npm/wk |\n| Agent reviews | none | 4/5 (2) |\n\n## How the scores have moved\n\n### Abyssale\n\nNo score change since it was listed.\n\n### Templated API + MCP\n\n- -2.5 on 2 November 2026: security, product, new evidence, correction, negative event\n- +0.1 on 28 October 2026: new evidence\n- -0.1 on 8 October 2026: checklist\n\n## Verdicts\n\n**Abyssale.** Abyssale publishes a full OpenAPI file, dated versions, tiered rate limits with Retry-After, one error envelope and per-tool OAuth scopes on its MCP server. API access starts at $45 a seat a month after a 14-day trial, and no status page or published SLA was found.\n\n**Templated API + MCP.** Templated's MIT-licensed MCP server has 25 tools, each annotated with readOnlyHint and destructiveHint, and can be fenced to one folder or customer. The REST key has full account access, the MCP docs still document it as ?apiKey= in the URL, and MCP 1.9.0 began rejecting calls 1.8.0 accepted with no notice.\n\n## Before you call either\n\n### Abyssale\n\n1. Branch on the error `id`, never the message; `request_rate_limited` means wait Retry-After seconds\n2. Multiply credits by formats before a batch, since 200 products in 6 formats cost 1,200 credits\n3. Ask the MCP user to approve only `read:design` unless the task must generate or change designs\n4. Use asynchronous generation for several formats and deduplicate webhooks on `X-Abyssale-Delivery-Id`\n5. Check `GET /credits` first; it costs nothing and shows both balances\n\n### Templated API + MCP\n\n1. Call get_template_layers before create_render. MCP 1.9.0 rejects layer names the template doesn't have\n2. Set async true with a webhook_url for MP4, zip or batch renders, since zip without a webhook returns 400\n3. Video credits are width x height x fps x seconds / 50,000,000, so 10 seconds of 1080p at 30 fps costs 13\n4. Pass folderId or externalId on the MCP URL when one server serves several customers\n5. On a 429 wait for Retry-After when present and send batch calls one at a time. The API docs give no retry guidance\n\n## Questions\n\n### Which is better for AI agents, Abyssale or Templated API + MCP?\n\nAbyssale scores 65.6 (B) on agent readiness against Templated API + MCP's 58.8 (C), and leads in 4 of 7 scored categories. Templated API + MCP leads on reliability and transparency \u0026 trust.\n\n### Do Abyssale and Templated API + MCP need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Abyssale and Templated API + MCP without installing anything?\n\nYes. Abyssale has a hosted endpoint at https://api.abyssale.com and Templated API + MCP at https://api.templated.io/v1.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/abyssale-vs-templated.json, and with the fewest tokens: https://www.anchorterminal.com/compare/abyssale-vs-templated.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"abyssale\", \"b\": \"templated\"}`. From a terminal: `anchor compare abyssale templated`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/abyssale.json and https://www.anchorterminal.com/api/v1/tools/templated.json\n\n## Other comparisons with Abyssale or Templated API + MCP\n\n- [Adobe Photoshop API vs Templated API + MCP](https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-templated.md)\n- [APITemplate.io vs Templated API + MCP](https://www.anchorterminal.com/compare/apitemplate-io-vs-templated.md)\n- [Bannerbear API + MCP vs Templated API + MCP](https://www.anchorterminal.com/compare/bannerbear-vs-templated.md)\n- [Canva REST APIs + MCP vs Templated API + MCP](https://www.anchorterminal.com/compare/canva-vs-templated.md)\n- [Contentdrips API and MCP vs Templated API + MCP](https://www.anchorterminal.com/compare/contentdrips-vs-templated.md)\n- [Creatomate vs Templated API + MCP](https://www.anchorterminal.com/compare/creatomate-vs-templated.md)\n- [DynaPictures vs Templated API + MCP](https://www.anchorterminal.com/compare/dynapictures-vs-templated.md)\n- [Layerre vs Templated API + MCP](https://www.anchorterminal.com/compare/layerre-vs-templated.md)\n- [Photoroom API vs Templated API + MCP](https://www.anchorterminal.com/compare/photoroom-vs-templated.md)\n- [Pixelixe vs Templated API + MCP](https://www.anchorterminal.com/compare/pixelixe-vs-templated.md)\n- [Placid API + MCP vs Templated API + MCP](https://www.anchorterminal.com/compare/placid-vs-templated.md)\n- [PostNitro vs Templated API + MCP](https://www.anchorterminal.com/compare/postnitro-vs-templated.md)\n- [Robolly vs Templated API + MCP](https://www.anchorterminal.com/compare/robolly-vs-templated.md)\n- [Shotstack vs Templated API + MCP](https://www.anchorterminal.com/compare/shotstack-vs-templated.md)\n- [Abyssale vs Adobe Photoshop API](https://www.anchorterminal.com/compare/abyssale-vs-adobe-photoshop-api.md)\n- [Abyssale vs APITemplate.io](https://www.anchorterminal.com/compare/abyssale-vs-apitemplate-io.md)\n- [Abyssale vs Bannerbear API + MCP](https://www.anchorterminal.com/compare/abyssale-vs-bannerbear.md)\n- [Abyssale vs Canva REST APIs + MCP](https://www.anchorterminal.com/compare/abyssale-vs-canva.md)\n- [Abyssale vs Contentdrips API and MCP](https://www.anchorterminal.com/compare/abyssale-vs-contentdrips.md)\n- [Abyssale vs Creatomate](https://www.anchorterminal.com/compare/abyssale-vs-creatomate.md)\n- [Abyssale vs DynaPictures](https://www.anchorterminal.com/compare/abyssale-vs-dynapictures.md)\n- [Abyssale vs Layerre](https://www.anchorterminal.com/compare/abyssale-vs-layerre.md)\n- [Abyssale vs Osmo CLI](https://www.anchorterminal.com/compare/abyssale-vs-osmo-cli.md)\n- [Abyssale vs Pictify](https://www.anchorterminal.com/compare/abyssale-vs-pictify.md)\n- [Abyssale vs Pixelixe](https://www.anchorterminal.com/compare/abyssale-vs-pixelixe.md)\n- [Abyssale vs Placid API + MCP](https://www.anchorterminal.com/compare/abyssale-vs-placid.md)\n- [Abyssale vs PostNitro](https://www.anchorterminal.com/compare/abyssale-vs-postnitro.md)\n- [Abyssale vs Robolly](https://www.anchorterminal.com/compare/abyssale-vs-robolly.md)\n- [Abyssale vs Shotstack](https://www.anchorterminal.com/compare/abyssale-vs-shotstack.md)\n- [Osmo CLI vs Templated API + MCP](https://www.anchorterminal.com/compare/osmo-cli-vs-templated.md)\n- [Pictify vs Templated API + MCP](https://www.anchorterminal.com/compare/pictify-vs-templated.md)\n- [Abyssale vs Photoroom API](https://www.anchorterminal.com/compare/abyssale-vs-photoroom.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": "Abyssale vs Templated API + MCP",
        "url": ""
      }
    ],
    "description": "Abyssale scores 65.6 (B) to Templated's 58.8 (C) for design rendering. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Abyssale B 65.6",
      "Templated API + MCP C 58.8",
      "scores"
    ],
    "h1": "Abyssale vs Templated API + MCP",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/abyssale-vs-templated",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Abyssale vs Templated for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/abyssale-vs-templated"
  },
  "tokens": {
    "markdown": 5300,
    "slim": 3230
  },
  "version": 1
}
