{
  "data": {
    "a": {
      "slug": "postnitro",
      "name": "PostNitro",
      "vendor": "PostNitro Inc.",
      "vendorUrl": "https://postnitro.ai",
      "kind": "mcp",
      "category": "design-assets",
      "summary": "PostNitro designs carousels, single-image posts and slide videos from templates and brand kits, then schedules them to six social networks. Agents use a hosted MCP server with 35 tools, a REST API, a CLI or an agent plugin.",
      "url": "https://www.anchorterminal.com/tools/postnitro",
      "markdownUrl": "https://www.anchorterminal.com/tools/postnitro.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/postnitro.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/postnitro.json",
      "repo": "https://github.com/postnitro/postnitro-agent",
      "license": "Proprietary hosted service under PostNitro's Terms of Service. The CLI, agent skill and agent plugin repositories are MIT",
      "transports": [
        "streamable-http",
        "http"
      ],
      "remoteUrl": "https://mcp.postnitro.ai/mcp",
      "packages": [
        {
          "registry": "npm",
          "name": "@postnitro/cli"
        },
        {
          "registry": "npm",
          "name": "@postnitro/embed"
        }
      ],
      "auth": "mixed",
      "authNotes": "The MCP server takes OAuth 2.1 with PKCE and dynamic client registration (scopes `postnitro` and `offline_access`), used by the Claude and ChatGPT directory listings, or a `pn-` API key as `Authorization: Bearer`. The REST API takes the same key in the `embed-api-key` header. A person generates the key under Profile \u003e Embed in the web app. No read-only key or finer scope is documented.",
      "pricing": "paid",
      "pricingNotes": "API, MCP and CLI calls spend Embed API credits, 1 per imported slide and 2 per AI-written slide. Credits come with Creator+ ($30 a month, 200) or Team+ ($60, 500), or as a $10 add-on for 250 on a paid plan, $0.04 each. Scheduling needs Creator+ or above (https://postnitro.ai/plans).",
      "priceSummary": "$15 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Embed API OpenAPI document, llms.txt, llms-full.txt, the MCP docs or the plans page (checked 2026-10-14).",
        "endpoints": []
      },
      "toolCount": 35,
      "popularity": {
        "githubStars": 2,
        "npmWeekly": 200,
        "pypiWeekly": null,
        "asOf": "2026-10-14"
      },
      "docsUrl": "https://postnitro.ai/docs/embed/mcp",
      "llmsTxt": "https://postnitro.ai/llms.txt",
      "openapi": "https://postnitro.ai/.well-known/openapi/embed.json",
      "capabilities": [
        "design.templates",
        "design.render",
        "design.brand",
        "social.schedule",
        "social.post"
      ],
      "tags": [
        "hosted",
        "mcp",
        "oauth",
        "openapi",
        "llms-txt",
        "closed-source",
        "async-jobs",
        "cli",
        "n8n",
        "no-status-page"
      ],
      "lastRelease": "2026-10-07",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 44.5,
        "grade": "E",
        "agentReady": false,
        "rank": 945,
        "ranked": true,
        "rankOf": 1084,
        "categoryRank": 9,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 49,
          "maintenance": 65,
          "payments": 20,
          "reliability": 42,
          "schema": 77,
          "security": 30,
          "transparency": 48
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-14"
        },
        "negative": -2,
        "negativeNotes": [
          "Conflicting training statements on PostNitro's own pages, read 14 October 2026. The privacy policy body (5 October 2023) says the data saved from carousel creation is used to train PostNitro's AI model, while the same page's description and the Claude connector page say content is never used to train AI models. At least one is wrong, and no dated update settles it (-2) (https://postnitro.ai/privacy, https://postnitro.ai/claude)"
        ],
        "verdict": "A hosted MCP server and REST API let an agent turn a topic, article or own slides into a branded carousel, image or slide video and schedule it, with OAuth, numbered rate limits and Markdown docs. No status page, security contact or idempotency key was found, and the privacy policy contradicts the vendor's no-training statement.",
        "bestFor": "An agent that must produce a designed, on-brand carousel or slide video and book it on LinkedIn, Instagram, TikTok, Threads, Facebook Pages or Pinterest in one chain.",
        "strengths": [
          "OAuth 2.1 with dynamic client registration on the MCP server, so Claude and ChatGPT connect without a stored API key",
          "Rate limits are published per key and endpoint, and 429 responses carry `Retry-After` and `X-RateLimit` headers",
          "OpenAPI 3.1 document, `llms.txt`, `llms-full.txt` and a Markdown version of every page by content negotiation",
          "Per-slide credit prices are public at $0.04 a credit, 1 per imported slide and 2 per AI-written slide",
          "The one-call generate-and-schedule tool returns the `designId` when scheduling fails, so a retry does not spend credits again"
        ],
        "weaknesses": [
          "No status page, incident history, SLA, security.txt or certification was found",
          "35 MCP tools load at once, with no toolsets or read-only subset, and the OAuth flow has one broad `postnitro` scope",
          "The privacy policy says carousel data trains PostNitro's AI model, while the Claude connector page says content is never used for training",
          "No idempotency key on create or schedule calls, and the Embed API has no changelog or deprecation policy",
          "Pages disagree on the API free tier and tool count. One docs index still says 12 MCP tools and four scheduling networks"
        ],
        "agentNotes": [
          "Call `postnitro_set_defaults` once with a template, brand and AI preset, or every generate call must carry those IDs",
          "Pass the `designId` from `postnitro_get_output` to scheduling, never the `embedPostId`, or the call fails with `Design not found`",
          "For a LinkedIn PDF post, set `linkedinPostSettings.postType` to `document` with a 5 to 90 character `postTitle`",
          "Ask for the `DESIGN` output or save as `DRAFT` when a person must approve before anything publishes",
          "Keep to 5 create calls a minute per key and wait for `Retry-After` on a 429"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 44.5
          }
        ],
        "editorialScores": {
          "ergonomics": 49,
          "maintenance": 65,
          "payments": 20,
          "reliability": 42,
          "schema": 77,
          "security": 30,
          "transparency": 33
        },
        "provenanceScore": 63
      },
      "connect": {
        "install": "npm install -g @postnitro/cli",
        "http": "curl https://embed-api.postnitro.ai/template -H \"embed-api-key: pn-your-api-key\"",
        "claudeCode": "claude mcp add --transport http postnitro https://mcp.postnitro.ai/mcp --header \"Authorization: Bearer pn-your-api-key-here\"",
        "config": {
          "mcpServers": {
            "postnitro": {
              "headers": {
                "Authorization": "Bearer pn-your-api-key-here"
              },
              "type": "http",
              "url": "https://mcp.postnitro.ai/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/design.templates",
        "tool": "https://letme.dev/postnitro"
      },
      "area": "design-diagrams",
      "unitPrices": [
        {
          "item": "Starter",
          "unit": "month",
          "usd": 15,
          "note": "No scheduling or API access unless the Embed API add-on is bought"
        },
        {
          "item": "Creator+",
          "unit": "month",
          "usd": 30,
          "note": "200 API credits a month, scheduling to 10 social accounts"
        },
        {
          "item": "Team+",
          "unit": "month",
          "usd": 60,
          "note": "500 API credits a month, scheduling to 30 social accounts"
        },
        {
          "item": "Embed API add-on",
          "unit": "month",
          "usd": 10,
          "note": "250 credits on top of a paid plan, scalable to 25,000"
        },
        {
          "item": "Embed API credit",
          "unit": "credit",
          "usd": 0.04,
          "note": "1 credit per imported slide, 2 per AI-written slide"
        }
      ],
      "provenance": {
        "legalEntity": "PostNitro Inc.",
        "domain": "postnitro.ai",
        "domainRegistered": "2023-03-23",
        "endpointOnVendorDomain": true,
        "terms": "https://postnitro.ai/terms",
        "privacy": "https://postnitro.ai/privacy",
        "statusPage": "",
        "changelog": "https://github.com/postnitro/postnitro-agent/blob/main/CHANGELOG.md",
        "securityTxt": "none",
        "checked": "2026-10-14",
        "notes": [
          "The Terms of Service, last updated 20 May 2024, cover the website, applications and APIs. They name no legal entity or governing law. The privacy policy names PostNitro Inc. as controller.",
          "The privacy policy is dated 5 October 2023 and names UserMaven, CrispChat and an unnamed payment processor. No DPA or sub-processor list was found.",
          "No status page was found. status.postnitro.ai did not connect and /status returns 404. The MCP server answers a health check at https://mcp.postnitro.ai/health, reporting version 1.3.0.",
          "The changelog covers the CLI only. No changelog for the Embed API or MCP server was found.",
          "postnitro.ai/.well-known/security.txt and /security.txt return 404.",
          "RDAP gives a registration date of 2023-03-23 for postnitro.ai. The fact sheet says the company was founded in 2023."
        ],
        "score": 63
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/postnitro.json",
      "live": {
        "slug": "postnitro",
        "probe": {
          "target": "https://mcp.postnitro.ai/mcp",
          "method": "mcp-initialize",
          "lastAt": "2026-10-15T00:24:22.389748682Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 101,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 103,
          "p95ms24h": 146,
          "samples24h": 31,
          "samples30d": 31,
          "days": [
            {
              "date": "2026-10-14",
              "probes": 26,
              "ok": 26
            },
            {
              "date": "2026-10-15",
              "probes": 5,
              "ok": 5
            }
          ]
        },
        "versions": [
          {
            "registry": "github",
            "name": "postnitro/postnitro-agent",
            "version": "v1.5.0",
            "released": "2026-10-07",
            "seenAt": "2026-10-15T00:15:12.63443761Z"
          },
          {
            "registry": "npm",
            "name": "@postnitro/cli",
            "version": "1.5.0",
            "seenAt": "2026-10-15T00:15:10.434524788Z"
          },
          {
            "registry": "npm",
            "name": "@postnitro/embed",
            "version": "2.0.3",
            "seenAt": "2026-10-15T00:15:11.257477478Z"
          }
        ],
        "githubStars": 2,
        "npmWeekly": 200,
        "mcpTools": {
          "url": "https://mcp.postnitro.ai/mcp",
          "checkedAt": "2026-10-14T22:17:48.649874285Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-10-14T22:17:48.649874285Z"
        },
        "updatedAt": "2026-10-15T00:24:22.389748682Z"
      }
    },
    "answer": "Shotstack scores 65.3 (B) on agent readiness against PostNitro's 44.5 (E), and leads in every scored category.",
    "b": {
      "slug": "shotstack",
      "name": "Shotstack",
      "vendor": "ShotStack Pty Ltd",
      "vendorUrl": "https://shotstack.io",
      "kind": "http-api",
      "category": "design-assets",
      "summary": "Shotstack is a cloud video editor driven by JSON. It renders video, images and audio from edits and templates with merge fields. Agents reach it through the Edit API, a hosted MCP server or a CLI with an agent skill.",
      "url": "https://www.anchorterminal.com/tools/shotstack",
      "markdownUrl": "https://www.anchorterminal.com/tools/shotstack.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/shotstack.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/shotstack.json",
      "repo": "https://github.com/shotstack/shotstack-cli",
      "license": "Proprietary service under Shotstack's Terms and Conditions. The CLI and skill are Apache-2.0, the schemas package and SDKs are MIT, and the Studio SDK is under PolyForm Shield 1.0.0",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.shotstack.io/edit/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "@shotstack/cli"
        },
        {
          "registry": "npm",
          "name": "@shotstack/schemas"
        },
        {
          "registry": "npm",
          "name": "shotstack-sdk"
        },
        {
          "registry": "pypi",
          "name": "shotstack-sdk"
        }
      ],
      "auth": "mixed",
      "authNotes": "REST calls and the CLI send an API key in the `x-api-key` header. A browser signup at app.shotstack.io gives one sandbox key and one production key, self-serve, with no scopes found in the docs. The same keys reach the Edit, Serve and Ingest APIs. The MCP server uses OAuth (authorisation code with PKCE S256, dynamic client registration, one scope, `mcp:tools`) or the API key in an `x-api-key` header for headless use.",
      "pricing": "usage",
      "pricingNotes": "10 free credits on signup, valid 30 days, with no card. Pay as you go is $10 for 50 credits, 20 cents a minute of rendered video. Monthly plans run from $39 for 250 minutes to $499 for 10,000. The `stage` sandbox renders free with a watermark, so an agent can start without a contract. AI generation is charged per model in credits (checked 2026-10-08).",
      "priceSummary": "$0.20 / credit",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "Prepaid credits and monthly plans. No x402, MPP or L402 in the docs, llms.txt, OpenAPI definition or pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 15,
      "popularity": {
        "githubStars": 0,
        "npmWeekly": 1211,
        "pypiWeekly": 326,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://shotstack.io/docs/guide/",
      "llmsTxt": "https://shotstack.io/llms.txt",
      "openapi": "https://shotstack.io/docs/api/api.edit.json",
      "capabilities": [
        "design.templates",
        "design.render",
        "video.edit",
        "video.generate",
        "image.generate",
        "speech.tts",
        "audio.music"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "mcp",
        "oauth",
        "openapi",
        "llms-txt",
        "cli",
        "agent-skill",
        "async-jobs",
        "webhooks",
        "video",
        "images",
        "sandbox",
        "status-page",
        "sla"
      ],
      "lastRelease": "2026-10-05",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 65.3,
        "grade": "B",
        "agentReady": false,
        "rank": 345,
        "ranked": true,
        "rankOf": 1084,
        "categoryRank": 1,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 63,
          "maintenance": 73,
          "payments": 45,
          "reliability": 85,
          "schema": 88,
          "security": 48,
          "transparency": 73
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": -3,
        "negativeNotes": [
          "4 October 2026. Release 1.22.0 of the published API definition removed the `pricing` object from the `GET /models` response and replaced it with `POST /generate/quote`, in a minor release with no breaking-change mark and no notice found. We did not test whether the live response changed that day (https://github.com/shotstack/oas-api-definition/blob/main/CHANGELOG.md)"
        ],
        "verdict": "A public OpenAPI definition, Markdown docs, a hosted MCP server with OAuth and a free watermarked sandbox let an agent draft, check and render video with little setup. API keys have no scopes, webhooks are unsigned, no security contact or certification of Shotstack's own was found, and the published Node and Python SDKs date from July 2024.",
        "bestFor": "Teams that render video, images or audio from JSON or templates at volume and want an agent to draft edits that a person reviews in Studio.",
        "strengths": [
          "OpenAPI 3.0.1 definition at `https://shotstack.io/docs/api/api.edit.json` with 122 schemas, plus llms.txt, llms-full.txt and a Markdown twin of every guide page",
          "Hosted MCP server at `https://mcp.shotstack.io/` with 15 tools, OAuth authorisation code with PKCE S256 and dynamic client registration, or an `x-api-key` header",
          "`shotstack validate` checks an edit offline and `shotstack studio` opens a preview link, both with no API key and no credits",
          "The `stage` environment renders free with a watermark, and `POST /generate/quote` returns the credit cost of an AI generation without charging",
          "Rate limits are published per API (Edit 300 requests per 60 seconds in production), and the terms carry a 99.9 per cent uptime SLA with a 10 per cent credit"
        ],
        "weaknesses": [
          "API keys have no scopes. One production key and one sandbox key reach the Edit, Serve and Ingest APIs, and key rotation was not found in the docs",
          "Webhook callbacks are not signed, per the webhooks guide, which tells receivers to confirm a render by calling the API",
          "No security.txt, disclosure policy or certification of Shotstack's own was found. The DPA relies on AWS's SOC 2 and ISO 27001 reports",
          "The published API definition dropped the `pricing` object from `GET /models` in release 1.22.0 on 4 October 2026, a minor release with no breaking-change mark",
          "The npm `shotstack-sdk` (0.2.9) and PyPI `shotstack-sdk` (0.2.8) packages were last published in July 2024"
        ],
        "agentNotes": [
          "Fetch `https://shotstack.io/docs/api/api.edit.json` and the conventions guide before writing an edit. Track order is reversed, so the first track renders on top",
          "Render in `stage` first. It is free and watermarked, but AI generation there is charged from the production credit balance",
          "Call `POST /generate/quote` before `POST /generate`, and send an `Idempotency-Key` header on generation. `POST /render` has no idempotency key, so do not resubmit blindly",
          "Do not store the `url` from the render status response. It expires after 24 hours. Use the CDN address built from `owner` and the render id",
          "On a 429, wait for the 60-second window to reset and retry with backoff. Limits are per API key, 300 a minute on the Edit API in production"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 65.3
          }
        ],
        "editorialScores": {
          "ergonomics": 63,
          "maintenance": 73,
          "payments": 45,
          "reliability": 85,
          "schema": 88,
          "security": 48,
          "transparency": 61
        },
        "provenanceScore": 84
      },
      "connect": {
        "install": "npm install -g @shotstack/cli",
        "http": "curl -X POST https://api.shotstack.io/edit/stage/render -H \"Content-Type: application/json\" -H \"x-api-key: $SHOTSTACK_API_KEY\" -d @edit.json",
        "claudeCode": "claude mcp add --transport http shotstack https://mcp.shotstack.io",
        "config": {
          "mcpServers": {
            "shotstack": {
              "url": "https://mcp.shotstack.io/"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/design.templates",
        "tool": "https://letme.dev/shotstack"
      },
      "area": "design-diagrams",
      "unitPrices": [
        {
          "item": "Pay as you go credit",
          "unit": "credit",
          "usd": 0.2,
          "note": "$10 for 50 credits, one credit renders one minute of video, valid 12 months"
        },
        {
          "item": "Starter",
          "unit": "month",
          "usd": 39,
          "note": "250 minutes a month"
        },
        {
          "item": "Pro",
          "unit": "month",
          "usd": 99,
          "note": "750 minutes a month"
        },
        {
          "item": "Scale",
          "unit": "month",
          "usd": 199,
          "note": "2,000 minutes a month"
        },
        {
          "item": "Volume",
          "unit": "month",
          "usd": 499,
          "note": "10,000 minutes a month"
        }
      ],
      "provenance": {
        "legalEntity": "ShotStack Pty Ltd",
        "domain": "shotstack.io",
        "domainRegistered": "2017-06-30",
        "endpointOnVendorDomain": true,
        "terms": "https://shotstack.io/terms/",
        "privacy": "https://shotstack.io/privacy/",
        "statusPage": "https://status.shotstack.io",
        "changelog": "https://github.com/shotstack/oas-api-definition/blob/main/CHANGELOG.md",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The terms name ShotStack Pty Ltd, ACN 632 863 024, and the privacy policy gives an address in Maroubra, New South Wales.",
          "The terms were last updated on 6 October 2026. They cover the APIs, Studio and AI generation, and include plans and an SLA as schedules.",
          "The privacy policy was last updated on 21 December 2021. A DPA and a sub-processor list, both updated 6 October 2026, are at shotstack.io/dpa/ and shotstack.io/sub-processors/.",
          "The API answers at api.shotstack.io, the MCP server at mcp.shotstack.io and hosted files at cdn.shotstack.io.",
          "shotstack.io/.well-known/security.txt returns 404.",
          "The status page runs on Kener and links an RSS feed of incidents and maintenance.",
          "The changelog is the CHANGELOG.md of the API definition repository. No changelog page was found on shotstack.io.",
          "RDAP for shotstack.io gives a registration date of 2017-06-30 and Gandi SAS as registrar."
        ],
        "score": 84
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/shotstack.json",
      "live": {
        "slug": "shotstack",
        "probe": {
          "target": "https://api.shotstack.io/edit/v1",
          "method": "get",
          "lastAt": "2026-10-15T00:24:25.831399487Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 858,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 865,
          "p95ms24h": 934,
          "samples24h": 250,
          "samples30d": 1412,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 169,
              "ok": 169
            },
            {
              "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": 5,
              "ok": 5
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.shotstack.io",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-14T21:46:09.805632885Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@shotstack/cli",
            "version": "0.11.0",
            "seenAt": "2026-10-15T00:21:31.345694451Z"
          },
          {
            "registry": "npm",
            "name": "@shotstack/schemas",
            "version": "1.22.0",
            "seenAt": "2026-10-15T00:21:32.315058959Z"
          },
          {
            "registry": "npm",
            "name": "shotstack-sdk",
            "version": "0.2.9",
            "seenAt": "2026-10-15T00:21:33.58570603Z"
          },
          {
            "registry": "pypi",
            "name": "shotstack-sdk",
            "version": "0.2.8",
            "released": "2024-07-19",
            "seenAt": "2026-10-15T00:21:35.557628087Z"
          }
        ],
        "githubStars": 0,
        "npmWeekly": 144,
        "pypiWeekly": 1023,
        "securityTxt": {
          "url": "https://shotstack.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-14T15:47:27.309727533Z"
        },
        "llmsTxt": {
          "url": "https://shotstack.io/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-14T14:15:04.563234066Z"
        },
        "domain": {
          "domain": "shotstack.io",
          "checkedAt": "2026-10-11T13:22:49.473876143Z"
        },
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/shotstack/oas-api-definition/main/CHANGELOG.md",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-10-14T21:07:57.56716738Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "8dc7b01dd6e2"
          },
          {
            "url": "https://shotstack.io/privacy/",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-10-14T21:07:13.204296351Z",
            "changedAt": "2026-10-13T20:23:04.064166673Z",
            "fingerprint": "7069416300ff"
          },
          {
            "url": "https://shotstack.io/terms/",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-14T21:07:15.766887348Z",
            "changedAt": "2026-10-13T20:23:07.34685682Z",
            "fingerprint": "b3690521f358"
          }
        ],
        "updatedAt": "2026-10-15T00:24:25.831399487Z"
      }
    },
    "facts": [
      {
        "a": "MCP server",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "PostNitro Inc.",
        "b": "ShotStack Pty Ltd",
        "name": "Vendor"
      },
      {
        "a": "https://mcp.postnitro.ai/mcp",
        "b": "https://api.shotstack.io/edit/v1",
        "name": "Hosted endpoint"
      },
      {
        "a": "Streamable HTTP, HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary hosted service under PostNitro's Terms of Service. The CLI, agent skill and agent plugin repositories are MIT",
        "b": "Proprietary service under Shotstack's Terms and Conditions. The CLI and skill are Apache-2.0, the schemas package and SDKs are MIT, and the Studio SDK is under PolyForm Shield 1.0.0",
        "name": "Licence"
      },
      {
        "a": "35",
        "b": "15",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-07",
        "b": "2026-10-05",
        "name": "Last release"
      },
      {
        "a": "2024-05-20",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2023-10-05",
        "b": "no date given",
        "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": "yes",
        "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": "2 stars, 200 npm/wk",
        "b": "0 stars, 1.2k npm/wk, 326 PyPI/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Shotstack scores 65.3 (B) on agent readiness against PostNitro's 44.5 (E), and leads in every scored category.",
        "question": "Which is better for AI agents, PostNitro or Shotstack?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do PostNitro and Shotstack need an API key?"
      },
      {
        "answer": "Yes. PostNitro has a hosted endpoint at https://mcp.postnitro.ai/mcp and Shotstack at https://api.shotstack.io/edit/v1.",
        "question": "Can an agent call PostNitro and Shotstack without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "An agent that must produce a designed, on-brand carousel or slide video and book it on LinkedIn, Instagram, TikTok, Threads, Facebook Pages or Pinterest in one chain.",
        "slug": "postnitro",
        "watchFor": "No status page, incident history, SLA, security.txt or certification was found"
      },
      {
        "aheadOn": [
          "Reliability, 85 against 42",
          "Schema \u0026 documentation, 88 against 77",
          "Agent ergonomics, 63 against 49",
          "Security \u0026 auth, 48 against 30",
          "Payments \u0026 pricing, 45 against 20",
          "Maintenance \u0026 community, 73 against 65",
          "Transparency \u0026 trust, 73 against 48"
        ],
        "also": null,
        "goodFor": "Teams that render video, images or audio from JSON or templates at volume and want an agent to draft edits that a person reviews in Studio.",
        "slug": "shotstack",
        "watchFor": "API keys have no scopes. One production key and one sandbox key reach the Edit, Serve and Ingest APIs, and key rotation was not found in the docs"
      }
    ],
    "job": {
      "capability": "design.templates",
      "name": "Design templates"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-postnitro.json",
        "title": "Adobe Photoshop API vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-shotstack.json",
        "title": "Adobe Photoshop API vs Shotstack",
        "url": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-shotstack"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-postnitro.json",
        "title": "APITemplate.io vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apitemplate-io-vs-shotstack.json",
        "title": "APITemplate.io vs Shotstack",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-shotstack"
      },
      {
        "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-shotstack.json",
        "title": "Bannerbear API + MCP vs Shotstack",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-shotstack"
      },
      {
        "json": "https://www.anchorterminal.com/compare/canva-vs-postnitro.json",
        "title": "Canva REST APIs + MCP vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/canva-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/canva-vs-shotstack.json",
        "title": "Canva REST APIs + MCP vs Shotstack",
        "url": "https://www.anchorterminal.com/compare/canva-vs-shotstack"
      },
      {
        "json": "https://www.anchorterminal.com/compare/creatomate-vs-postnitro.json",
        "title": "Creatomate vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/creatomate-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/creatomate-vs-shotstack.json",
        "title": "Creatomate vs Shotstack",
        "url": "https://www.anchorterminal.com/compare/creatomate-vs-shotstack"
      },
      {
        "json": "https://www.anchorterminal.com/compare/photoroom-vs-postnitro.json",
        "title": "Photoroom API vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/photoroom-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/photoroom-vs-shotstack.json",
        "title": "Photoroom API vs Shotstack",
        "url": "https://www.anchorterminal.com/compare/photoroom-vs-shotstack"
      },
      {
        "json": "https://www.anchorterminal.com/compare/placid-vs-postnitro.json",
        "title": "Placid API + MCP vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/placid-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/placid-vs-shotstack.json",
        "title": "Placid API + MCP vs Shotstack",
        "url": "https://www.anchorterminal.com/compare/placid-vs-shotstack"
      },
      {
        "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/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/osmo-cli-vs-postnitro.json",
        "title": "Osmo CLI vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/osmo-cli-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/osmo-cli-vs-shotstack.json",
        "title": "Osmo CLI vs Shotstack",
        "url": "https://www.anchorterminal.com/compare/osmo-cli-vs-shotstack"
      }
    ],
    "scores": [
      {
        "by": 43,
        "edge": "shotstack",
        "key": "reliability",
        "name": "Reliability",
        "postnitro": 42,
        "shotstack": 85,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 11,
        "edge": "shotstack",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "postnitro": 77,
        "shotstack": 88,
        "weight": 13
      },
      {
        "by": 14,
        "edge": "shotstack",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "postnitro": 49,
        "shotstack": 63,
        "weight": 13
      },
      {
        "by": 18,
        "edge": "shotstack",
        "key": "security",
        "name": "Security \u0026 auth",
        "postnitro": 30,
        "shotstack": 48,
        "weight": 14
      },
      {
        "by": 25,
        "edge": "shotstack",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "postnitro": 20,
        "shotstack": 45,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 8,
        "edge": "shotstack",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "postnitro": 65,
        "shotstack": 73,
        "weight": 7
      },
      {
        "by": 25,
        "edge": "shotstack",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "postnitro": 48,
        "shotstack": 73,
        "weight": 7
      }
    ],
    "summary": "Shotstack scores 65.3 (B) on agent readiness against PostNitro's 44.5 (E), and leads in every scored category. Both do design templates.",
    "verdicts": {
      "postnitro": "A hosted MCP server and REST API let an agent turn a topic, article or own slides into a branded carousel, image or slide video and schedule it, with OAuth, numbered rate limits and Markdown docs. No status page, security contact or idempotency key was found, and the privacy policy contradicts the vendor's no-training statement.",
      "shotstack": "A public OpenAPI definition, Markdown docs, a hosted MCP server with OAuth and a free watermarked sandbox let an agent draft, check and render video with little setup. API keys have no scopes, webhooks are unsigned, no security contact or certification of Shotstack's own was found, and the published Node and Python SDKs date from July 2024."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/postnitro-vs-shotstack",
    "json": "https://www.anchorterminal.com/compare/postnitro-vs-shotstack.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/postnitro-vs-shotstack.md",
    "slim": "https://www.anchorterminal.com/compare/postnitro-vs-shotstack.min.md"
  },
  "markdown": "Shotstack scores 65.3 (B) on agent readiness against PostNitro's 44.5 (E), and leads in every scored category. Both do design templates.\n\n- PostNitro: grade E, 44.5/100, rank #945 of 1084. Markdown https://www.anchorterminal.com/tools/postnitro.md · JSON https://www.anchorterminal.com/api/v1/tools/postnitro.json\n- Shotstack: grade B, 65.3/100, rank #345 of 1084. Markdown https://www.anchorterminal.com/tools/shotstack.md · JSON https://www.anchorterminal.com/api/v1/tools/shotstack.json\n- Best programmatic image and design asset APIs for AI agents: https://www.anchorterminal.com/best/design-assets/index.md\n- All 55 assets comparisons: https://www.anchorterminal.com/compare/design-assets/index.md\n\n## Which one, for what\n\n### PostNitro (E)\n\nGood for: An agent that must produce a designed, on-brand carousel or slide video and book it on LinkedIn, Instagram, TikTok, Threads, Facebook Pages or Pinterest in one chain.\n\nWatch for: No status page, incident history, SLA, security.txt or certification was found\n\n### Shotstack (B)\n\nGood for: Teams that render video, images or audio from JSON or templates at volume and want an agent to draft edits that a person reviews in Studio.\n\nAhead on:\n- Reliability, 85 against 42\n- Schema \u0026 documentation, 88 against 77\n- Agent ergonomics, 63 against 49\n- Security \u0026 auth, 48 against 30\n- Payments \u0026 pricing, 45 against 20\n- Maintenance \u0026 community, 73 against 65\n- Transparency \u0026 trust, 73 against 48\n\nWatch for: API keys have no scopes. One production key and one sandbox key reach the Edit, Serve and Ingest APIs, and key rotation was not found in the docs\n\n\n## Score by category\n\n| Category | Weight | PostNitro | Shotstack | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 42 | 85 | Shotstack +43 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 77 | 88 | Shotstack +11 |\n| Agent ergonomics | 13% (16.2 this run) | 49 | 63 | Shotstack +14 |\n| Security \u0026 auth | 14% (17.5 this run) | 30 | 48 | Shotstack +18 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 45 | Shotstack +25 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 65 | 73 | Shotstack +8 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 48 | 73 | Shotstack +25 |\n| Negative events | ≤15 | -2 | -3 | |\n| **Total** | | **44.5 · E** | **65.3 · B** | |\n\n## Facts side by side\n\n| Fact | PostNitro | Shotstack |\n| --- | --- | --- |\n| Kind | MCP server | HTTP API |\n| Vendor | PostNitro Inc. | ShotStack Pty Ltd |\n| Hosted endpoint | `https://mcp.postnitro.ai/mcp` | `https://api.shotstack.io/edit/v1` |\n| Transports | Streamable HTTP, HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Paid | Pay per use |\n| x402 | no | no |\n| Licence | Proprietary hosted service under PostNitro's Terms of Service. The CLI, agent skill and agent plugin repositories are MIT | Proprietary service under Shotstack's Terms and Conditions. The CLI and skill are Apache-2.0, the schemas package and SDKs are MIT, and the Studio SDK is under PolyForm Shield 1.0.0 |\n| Tools exposed | 35 | 15 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-07 | 2026-10-05 |\n| Terms last updated | 2024-05-20 | no date given |\n| Privacy policy last updated | 2023-10-05 | no date given |\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 | yes | not found in the text |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 2 stars, 200 npm/wk | 0 stars, 1.2k npm/wk, 326 PyPI/wk |\n\n## Verdicts\n\n**PostNitro.** A hosted MCP server and REST API let an agent turn a topic, article or own slides into a branded carousel, image or slide video and schedule it, with OAuth, numbered rate limits and Markdown docs. No status page, security contact or idempotency key was found, and the privacy policy contradicts the vendor's no-training statement.\n\n**Shotstack.** A public OpenAPI definition, Markdown docs, a hosted MCP server with OAuth and a free watermarked sandbox let an agent draft, check and render video with little setup. API keys have no scopes, webhooks are unsigned, no security contact or certification of Shotstack's own was found, and the published Node and Python SDKs date from July 2024.\n\n## Before you call either\n\n### PostNitro\n\n1. Call `postnitro_set_defaults` once with a template, brand and AI preset, or every generate call must carry those IDs\n2. Pass the `designId` from `postnitro_get_output` to scheduling, never the `embedPostId`, or the call fails with `Design not found`\n3. For a LinkedIn PDF post, set `linkedinPostSettings.postType` to `document` with a 5 to 90 character `postTitle`\n4. Ask for the `DESIGN` output or save as `DRAFT` when a person must approve before anything publishes\n5. Keep to 5 create calls a minute per key and wait for `Retry-After` on a 429\n\n### Shotstack\n\n1. Fetch `https://shotstack.io/docs/api/api.edit.json` and the conventions guide before writing an edit. Track order is reversed, so the first track renders on top\n2. Render in `stage` first. It is free and watermarked, but AI generation there is charged from the production credit balance\n3. Call `POST /generate/quote` before `POST /generate`, and send an `Idempotency-Key` header on generation. `POST /render` has no idempotency key, so do not resubmit blindly\n4. Do not store the `url` from the render status response. It expires after 24 hours. Use the CDN address built from `owner` and the render id\n5. On a 429, wait for the 60-second window to reset and retry with backoff. Limits are per API key, 300 a minute on the Edit API in production\n\n## Questions\n\n### Which is better for AI agents, PostNitro or Shotstack?\n\nShotstack scores 65.3 (B) on agent readiness against PostNitro's 44.5 (E), and leads in every scored category.\n\n### Do PostNitro and Shotstack need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call PostNitro and Shotstack without installing anything?\n\nYes. PostNitro has a hosted endpoint at https://mcp.postnitro.ai/mcp and Shotstack at https://api.shotstack.io/edit/v1.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/postnitro-vs-shotstack.json, and with the fewest tokens: https://www.anchorterminal.com/compare/postnitro-vs-shotstack.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"postnitro\", \"b\": \"shotstack\"}`. From a terminal: `anchor compare postnitro shotstack`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/postnitro.json and https://www.anchorterminal.com/api/v1/tools/shotstack.json\n\n## Other comparisons with PostNitro or Shotstack\n\n- [Adobe Photoshop API vs PostNitro](https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-postnitro.md)\n- [Adobe Photoshop API vs Shotstack](https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-shotstack.md)\n- [APITemplate.io vs PostNitro](https://www.anchorterminal.com/compare/apitemplate-io-vs-postnitro.md)\n- [APITemplate.io vs Shotstack](https://www.anchorterminal.com/compare/apitemplate-io-vs-shotstack.md)\n- [Bannerbear API + MCP vs PostNitro](https://www.anchorterminal.com/compare/bannerbear-vs-postnitro.md)\n- [Bannerbear API + MCP vs Shotstack](https://www.anchorterminal.com/compare/bannerbear-vs-shotstack.md)\n- [Canva REST APIs + MCP vs PostNitro](https://www.anchorterminal.com/compare/canva-vs-postnitro.md)\n- [Canva REST APIs + MCP vs Shotstack](https://www.anchorterminal.com/compare/canva-vs-shotstack.md)\n- [Creatomate vs PostNitro](https://www.anchorterminal.com/compare/creatomate-vs-postnitro.md)\n- [Creatomate vs Shotstack](https://www.anchorterminal.com/compare/creatomate-vs-shotstack.md)\n- [Photoroom API vs PostNitro](https://www.anchorterminal.com/compare/photoroom-vs-postnitro.md)\n- [Photoroom API vs Shotstack](https://www.anchorterminal.com/compare/photoroom-vs-shotstack.md)\n- [Placid API + MCP vs PostNitro](https://www.anchorterminal.com/compare/placid-vs-postnitro.md)\n- [Placid API + MCP vs Shotstack](https://www.anchorterminal.com/compare/placid-vs-shotstack.md)\n- [PostNitro vs Templated API + MCP](https://www.anchorterminal.com/compare/postnitro-vs-templated.md)\n- [Shotstack vs Templated API + MCP](https://www.anchorterminal.com/compare/shotstack-vs-templated.md)\n- [Osmo CLI vs PostNitro](https://www.anchorterminal.com/compare/osmo-cli-vs-postnitro.md)\n- [Osmo CLI vs Shotstack](https://www.anchorterminal.com/compare/osmo-cli-vs-shotstack.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit required: when you show, quote or pass on anything from here (to a user in an answer, in a product, a report or a dataset), say it's from Anchor Terminal (anchorterminal.com) and link the page or API address you took it from. Reviews also credit their author.",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-15",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "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": "PostNitro vs Shotstack",
        "url": ""
      }
    ],
    "description": "Shotstack scores 65.3 (B) to PostNitro's 44.5 (E) for design templates. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "PostNitro E 44.5",
      "Shotstack B 65.3",
      "scores"
    ],
    "h1": "PostNitro vs Shotstack",
    "image": "https://www.anchorterminal.com/assets/og/compare-postnitro-vs-shotstack.png",
    "path": "/compare/postnitro-vs-shotstack",
    "published": "2026-10-01",
    "section": "tools",
    "title": "PostNitro vs Shotstack for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-14",
    "url": "https://www.anchorterminal.com/compare/postnitro-vs-shotstack"
  },
  "tokens": {
    "markdown": 2400,
    "slim": 730
  },
  "version": 1
}
