{
  "data": {
    "a": {
      "slug": "pictify",
      "name": "Pictify",
      "vendor": "Pictify.io",
      "vendorUrl": "https://pictify.io",
      "kind": "http-api",
      "category": "design-assets",
      "summary": "Pictify renders HTML, URLs and saved templates into PNG, JPG or WebP images, PDFs, GIFs and MP4 video through a REST API, official SDKs in four languages and an MCP server.",
      "url": "https://www.anchorterminal.com/tools/pictify",
      "markdownUrl": "https://www.anchorterminal.com/tools/pictify.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/pictify.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/pictify.json",
      "dns": "pictify.grade.anchorterminal.com",
      "repo": "https://github.com/pictify-io/mcp",
      "license": "MIT for the MCP server. The Pictify API is a closed service under terms last updated 18 July 2024",
      "transports": [
        "http",
        "stdio",
        "streamable-http"
      ],
      "remoteUrl": "https://api.pictify.io",
      "packages": [
        {
          "registry": "npm",
          "name": "@pictify/mcp-server"
        }
      ],
      "auth": "mixed",
      "authNotes": "API keys (`pic_live_` plus 64 hex characters since September 2026) created in the dashboard and sent as `Authorization: Bearer`. Keys can be rotated (a replacement is made, then the old key revoked) or revoked at once. No scopes. The local MCP server reads `PICTIFY_API_KEY`; a hosted MCP endpoint at mcp.pictify.io advertises OAuth with an `mcp:tools` scope, which the docs don't describe.",
      "pricing": "freemium",
      "pricingNotes": "Free $0 with 50 renders a month, 3 saved templates and no card. Basic $19 a month ($15 yearly) with 1,000 renders and $0.02 per extra render, Pro $49 ($39) with 10,000 and $0.01, Business $249 ($199) with 40,000 and $0.005. One render pool covers images, PDF pages, GIFs and video. Failed requests aren't billed.",
      "priceSummary": "Freemium",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "Subscriptions with overage billing. No x402, MPP or L402 in the OpenAPI, the docs, llms.txt or pricing.md (checked 2026-11-06). Exhausted credits return 429 or 402 with `quota_exceeded` and no payment requirements.",
        "endpoints": []
      },
      "toolCount": 25,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 55,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://docs.pictify.io",
      "llmsTxt": "https://docs.pictify.io/llms.txt",
      "openapi": "https://docs.pictify.io/openapi/v1.yaml",
      "registryName": "io.github.pictify-io/mcp",
      "capabilities": [
        "design.render",
        "design.templates",
        "pdf.generate",
        "video.generate"
      ],
      "tags": [
        "hosted",
        "openapi",
        "llms-txt",
        "mcp",
        "stdio",
        "mcp-registry",
        "api-key",
        "freemium",
        "free-tier",
        "no-card",
        "webhooks",
        "telemetry"
      ],
      "lastRelease": "2026-09-20",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 55.7,
        "grade": "C",
        "agentReady": false,
        "rank": 856,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 7,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 74,
          "maintenance": 68,
          "payments": 40,
          "reliability": 45,
          "schema": 88,
          "security": 45,
          "transparency": 52
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": -3,
        "negativeNotes": [
          "Workflows (CSV or webhook runs with per-recipient email delivery) were retired in September 2026 per the changelog (https://docs.pictify.io/resources/changelog.md), while pictify.io's llms.txt still calls the Render-to-Recipient workflow Pictify's core pattern and pricing.md (last updated 9 August 2026) still says per-recipient email delivery is included on paid workflow runs (https://pictify.io/llms.txt, https://pictify.io/pricing.md), read 6 November 2026. A retired feature still advertised, -3."
        ],
        "verdict": "A public OpenAPI 3.1 contract, per-render overage prices, a recurring no-card free tier and error codes that tell quota apart from rate limits make Pictify easy for an agent to call and budget. Its MCP server reports tool arguments and results to PostHog by default, and the privacy policy, last updated July 2024, mentions neither.",
        "bestFor": "HTML-to-image, template renders, PDFs and short video from one API, with per-render prices an agent can budget.",
        "strengths": [
          "Public OpenAPI 3.1, llms.txt and Markdown docs, with official SDKs in Node.js, Python, Go and Ruby",
          "Overage prices per render published without login, from $0.02 down to $0.005",
          "Free plan of 50 renders a month with no card and no watermark",
          "Error codes separate monthly quota from rate limits, and failed requests aren't billed",
          "MCP server in the official registry under the pictify-io GitHub namespace, latest 2.0.0"
        ],
        "weaknesses": [
          "The MCP server sends tool arguments, results and the account email to PostHog unless turned off",
          "Privacy policy and terms date from 18 July 2024 and name no company or processors",
          "Workflows were retired in September 2026 but llms.txt and pricing.md still describe them",
          "The MCP docs page lists 26 tools, some of them removed on 19 September 2026",
          "No key scopes or read-only key, and no security.txt or disclosure policy"
        ],
        "agentNotes": [
          "Set `PICTIFY_ANALYTICS_DISABLED=1` in the MCP server's env when tool inputs are confidential",
          "On a 429, read `code` first; `quota_exceeded` means wait for the monthly reset, not retry",
          "Retry a 5xx once; a failed generation bills nothing",
          "Pass only one of `html`, `url` or `template` to `pictify_create_image`",
          "Use batch render for one image per row rather than many single calls"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 55.7
          }
        ],
        "editorialScores": {
          "ergonomics": 74,
          "maintenance": 68,
          "payments": 40,
          "reliability": 45,
          "schema": 88,
          "security": 45,
          "transparency": 39
        },
        "provenanceScore": 64,
        "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": "npx -y @pictify/mcp-server",
        "claudeCode": "claude mcp add pictify -- npx -y @pictify/mcp-server",
        "config": {
          "mcpServers": {
            "pictify": {
              "args": [
                "-y",
                "@pictify/mcp-server"
              ],
              "command": "npx",
              "env": {
                "PICTIFY_API_KEY": "YOUR_API_KEY"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/design.render",
        "tool": "https://letme.dev/pictify"
      },
      "area": "design-diagrams",
      "unitPrices": [
        {
          "item": "Extra render on Basic",
          "unit": "image",
          "usd": 0.02,
          "note": "Basic $19 a month includes 1,000 renders; one pool for images, PDF pages, GIFs and video"
        },
        {
          "item": "Extra render on Pro",
          "unit": "image",
          "usd": 0.01,
          "note": "Pro $49 a month includes 10,000 renders"
        },
        {
          "item": "Extra render on Business",
          "unit": "image",
          "usd": 0.005,
          "note": "Business $249 a month includes 40,000 renders"
        }
      ],
      "provenance": {
        "legalEntity": "",
        "domain": "pictify.io",
        "domainRegistered": "2024-02-18",
        "endpointOnVendorDomain": true,
        "terms": "https://pictify.io/terms",
        "privacy": "https://pictify.io/privacy",
        "statusPage": "https://status.pictify.io",
        "changelog": "https://docs.pictify.io/resources/changelog",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The terms and privacy policy, both last updated 18 July 2024, name only Pictify.io and choose United States law. No company form or address is given. The npm package's maintainer is Suyash Thakur.",
          "The terms forbid unauthorised collection of information from the Service. Public pages were read as data.",
          "pictify.io/robots.txt allows all but the dashboard, login, signup, workspace, canvas, invite and /api/ paths, with Content-Signal search=yes, ai-input=yes, ai-train=yes. docs.pictify.io allows the docs. status.pictify.io/robots.txt disallows every path, so the status page's content wasn't used (one request reached it before its robots.txt was read, and what it returned was discarded).",
          "RDAP gives pictify.io a registration date of 18 February 2024.",
          "/.well-known/security.txt returns 404."
        ],
        "score": 64
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/pictify.json",
      "live": {
        "slug": "pictify",
        "probe": {
          "target": "https://api.pictify.io",
          "method": "get",
          "lastAt": "2026-11-07T18:20:46.929814597Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 260,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 247,
          "p95ms24h": 416,
          "samples24h": 200,
          "samples30d": 200,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.pictify.io",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-07T04:48:36.108648674Z"
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "io.github.pictify-io/mcp",
            "version": "2.0.0",
            "seenAt": "2026-11-07T18:16:28.95801333Z"
          },
          {
            "registry": "npm",
            "name": "@pictify/mcp-server",
            "version": "2.0.0",
            "seenAt": "2026-11-06T23:56:03.791188542Z"
          }
        ],
        "githubStars": 0,
        "npmWeekly": 55,
        "securityTxt": {
          "url": "https://pictify.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:00:53.674703481Z"
        },
        "llmsTxt": {
          "url": "https://docs.pictify.io/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:33:37.409193605Z"
        },
        "pages": [
          {
            "url": "https://docs.pictify.io/resources/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:07:29.763829977Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "8886bf07ecff"
          },
          {
            "url": "https://pictify.io/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:16:26.928025338Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "de6aaaa6113c"
          },
          {
            "url": "https://pictify.io/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:16:29.17143268Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "f3dfbe385bd9"
          }
        ],
        "updatedAt": "2026-11-07T18:20:46.929814597Z"
      }
    },
    "answer": "Pictify scores 55.7 (C) on agent readiness against PostNitro's 52.6 (D), and leads in 4 of 7 scored categories. PostNitro leads on security \u0026 auth and transparency \u0026 trust.",
    "b": {
      "slug": "postnitro",
      "name": "PostNitro",
      "vendor": "PostNitro Inc.",
      "vendorUrl": "https://postnitro.ai",
      "kind": "mcp",
      "category": "design-assets",
      "summary": "PostNitro designs carousels, single-image posts and videos from templates and brand kits, then schedules them to six social networks. Agents use a hosted MCP server with 40 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",
      "dns": "postnitro.grade.anchorterminal.com",
      "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": 40,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-05"
      },
      "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-11-01",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 52.6,
        "grade": "D",
        "agentReady": false,
        "rank": 974,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 9,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 68,
          "maintenance": 65,
          "payments": 20,
          "reliability": 45,
          "schema": 77,
          "security": 56,
          "transparency": 58
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-05"
        },
        "negative": -3,
        "negativeNotes": [
          "PostNitro's Embed API stopped honouring a video's documented length, read 5 November 2026. CLI 1.5.0 documented `--video-duration` as the whole video's length, at least 5 and under 60 seconds and required for an MP4. CLI 1.6.0 (1 November 2026) hides and ignores it, says the API ignores `videoDuration`, and videos now run as long as their motion takes, up to 2:00, with an MP4 over that failing. No earlier notice was found (-3) (https://github.com/postnitro/postnitro-agent, https://postnitro.ai/docs/embed/mcp.md)"
        ],
        "verdict": "A hosted MCP server and REST API let an agent turn a topic, article or its own slides into a branded carousel, image or video and schedule it, with OAuth, a read-only server URL, idempotency keys and numbered rate limits. No status page, SLA or free API tier was found, and security.txt names only a support address.",
        "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": [
          "Every create request and create tool takes an idempotency key, so a timed-out generation or schedule can be retried without a second charge",
          "A read-only MCP server URL serves only the 16 read tools, and the docs name the six destructive ones",
          "Rate limits are published per key, 5 creates, 120 status reads and 30 other calls a minute, with `Retry-After` on 429",
          "OAuth 2.1 with PKCE and dynamic client registration on the MCP server, so Claude and ChatGPT connect without a stored API key",
          "`llms.txt`, Markdown twins of every docs page, and docs that say when not to use PostNitro and how to treat third-party content"
        ],
        "weaknesses": [
          "No status page, incident history or SLA was found",
          "No free API tier. API, MCP and CLI calls need a paid plan with credits",
          "40 MCP tools load together on the main server URL, and the tool schemas sit in a catalogue we didn't read",
          "The OAuth flow has one broad `postnitro` scope, and no scoped or read-only API key is documented",
          "security.txt names a support address only, with no disclosure policy, bug bounty or certification",
          "The Embed API stopped honouring a video's set length on 1 November 2026, with no earlier notice found"
        ],
        "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, wait for `Retry-After` on a 429, and resend the same `idempotencyKey` when retrying a create",
          "Connect to https://mcp.postnitro.ai/mcp/readonly when the agent should only read"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 2.8,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 52.6
          }
        ],
        "editorialScores": {
          "ergonomics": 68,
          "maintenance": 65,
          "payments": 20,
          "reliability": 45,
          "schema": 77,
          "security": 56,
          "transparency": 39
        },
        "provenanceScore": 77,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-05",
            "maintenance": "2026-11-05",
            "payments": "2026-11-05",
            "reliability": "2026-11-05",
            "schema": "2026-11-05",
            "security": "2026-11-05",
            "transparency": "2026-11-05"
          },
          "last": "2026-11-05",
          "lastMoved": "2026-11-05",
          "oldest": "2026-11-05",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "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": "valid",
        "checked": "2026-11-05",
        "notes": [
          "The Terms of Service, last updated 20 May 2024, cover the website, applications and APIs and carry no clause on automated access. They name no legal entity or governing law. The privacy policy names PostNitro Inc. as controller.",
          "The privacy policy was updated on 2 November 2026 to correct its Use of Data section and names UserMaven, CrispChat and an unnamed payment processor. No DPA or sub-processor list was found.",
          "No status page was found, and none is linked from llms.txt or the docs.",
          "The changelog covers the CLI only. No changelog for the Embed API or MCP server was found.",
          "postnitro.ai/.well-known/security.txt names support@postnitro.ai and expires on 1 November 2027."
        ],
        "score": 77
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/postnitro.json",
      "live": {
        "slug": "postnitro",
        "probe": {
          "target": "https://mcp.postnitro.ai/mcp",
          "method": "mcp-initialize",
          "lastAt": "2026-11-07T18:20:48.226904833Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 156,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 114,
          "p95ms24h": 179,
          "samples24h": 239,
          "samples30d": 5908,
          "days": [
            {
              "date": "2026-10-14",
              "probes": 26,
              "ok": 26
            },
            {
              "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
            }
          ]
        },
        "versions": [
          {
            "registry": "github",
            "name": "postnitro/postnitro-agent",
            "version": "v1.6.0",
            "released": "2026-10-31",
            "seenAt": "2026-11-06T23:57:55.699083908Z"
          },
          {
            "registry": "npm",
            "name": "@postnitro/cli",
            "version": "1.6.0",
            "seenAt": "2026-11-06T23:57:53.066099433Z"
          },
          {
            "registry": "npm",
            "name": "@postnitro/embed",
            "version": "2.0.3",
            "seenAt": "2026-11-06T23:57:53.894629381Z"
          }
        ],
        "githubStars": 2,
        "npmWeekly": 229,
        "securityTxt": {
          "url": "https://postnitro.ai/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-11-01T00:00:00.000Z",
          "checkedAt": "2026-11-07T15:59:37.570333311Z"
        },
        "llmsTxt": {
          "url": "https://postnitro.ai/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:33:40.540865058Z"
        },
        "domain": {
          "domain": "postnitro.ai",
          "registered": "2023-03-23",
          "source": "https://rdap.identitydigital.services/rdap/domain/postnitro.ai",
          "checkedAt": "2026-11-01T14:16:02.668957201Z"
        },
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/postnitro/postnitro-agent/main/CHANGELOG.md",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-11-07T14:23:01.203463221Z",
            "changedAt": "2026-11-01T06:54:37.019593983Z",
            "fingerprint": "a57a0c547295"
          },
          {
            "url": "https://postnitro.ai/privacy",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-11-07T14:17:12.148942195Z",
            "changedAt": "2026-11-02T07:23:21.324265604Z",
            "fingerprint": "d7cac03060d1"
          },
          {
            "url": "https://postnitro.ai/terms",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-11-07T14:17:15.023858232Z",
            "changedAt": "2026-11-01T06:50:30.865238507Z",
            "fingerprint": "e5294038e9f6"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.postnitro.ai/mcp",
          "checkedAt": "2026-11-07T01:46:54.995870856Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-10-14T22:17:48.649874285Z"
        },
        "github": {
          "repo": "postnitro/postnitro-agent",
          "checkedAt": "2026-11-02T09:18:06.170158502Z",
          "stars": 2,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-31T22:02:29Z",
          "openIssues": 0,
          "openPRs": 0,
          "issuesOpened90d": 0,
          "issuesClosed90d": 0,
          "prsMerged90d": 7
        },
        "updatedAt": "2026-11-07T18:20:48.226904833Z"
      }
    },
    "edges": [
      {
        "by": 20,
        "category": "payments",
        "leads": "pictify",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). Overage prices per render published without login, $0.02 on Basic, $0.01 on Pro and $0.005 on Business, with plan prices (20). Free plan of 50 renders a month, marked no card and no watermark (20). A person signs up and creates the key in the dashboard (0). 0 + 20 + 20 + 0 = 40.",
          "b": "No x402, MPP or L402 (0). Credit prices are public without a login at $0.04 a credit, 1 per imported slide and 2 per AI-written slide, with plan prices of $15, $30 and $60 a month (20). The web app has a free plan with no card, but the subscription docs, the MCP docs and llms.txt now agree there is no free API tier, and calls without a paid plan return 402 (0). A person signs up in a browser and generates a key, or approves OAuth in the client. Dynamic client registration removes the key step but not the signup (0). 0 + 20 + 0 + 0 = 20."
        },
        "scores": {
          "a": 40,
          "b": 20
        }
      },
      {
        "by": 11,
        "category": "schema",
        "leads": "pictify",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "Public OpenAPI 3.1 at docs.pictify.io/openapi/v1.yaml with 20 paths (25). llms.txt on the site and docs, with a Markdown copy of every docs page and a machine-readable pricing.md (10). Endpoint pages say what each call is for, and `pictify_create_image` says to pass only one of html, url or template. The MCP docs page still lists 26 tools including some removed on 19 September 2026 (14 of 20). Width and height ranges (1 to 4,000), output enums and quality bounds (12 of 15). An error page with status codes, stable code slugs and what to do for each, plus examples on every endpoint page (14 of 15). Versioned v1 contract and a public changelog by month; the September 2026 entry has no day (13 of 15). 25 + 10 + 14 + 12 + 14 + 13 = 88.",
          "b": "OpenAPI 3.1 document for the Embed API at `/.well-known/openapi/embed.json`, with 13 operations per the 14 October check and not re-read. The MCP docs now point to a public tool catalogue on the MCP host with every tool's input and output schema, which we didn't request, so the earlier partial is held (20). `llms.txt` (updated 29 October 2026), `llms-full.txt`, a docs `llms.txt` and `.md` twins (10). The docs state what each tool is for, when not to use PostNitro and the `embedPostId` and `designId` split, and the tool count now reads 40 on every page read (15). 24 enums, typed slide objects and per-platform settings with conditional rules per the 14 October check, and unknown keys in settings objects are now refused by name (12). Examples on each page and a full table of validation messages for the Schedule API (13). `info.version` 1.0.0 with no version in the path and no API changelog. The CLI has a dated Keep a Changelog file with semver (7). 20 + 10 + 15 + 12 + 13 + 7 = 77."
        },
        "scores": {
          "a": 88,
          "b": 77
        }
      },
      {
        "by": 11,
        "category": "security",
        "leads": "postnitro",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Prefixed API keys that can be rotated or revoked at once in the dashboard, with no scopes. The hosted MCP endpoint's metadata names api.pictify.io as authorisation server with one `mcp:tools` scope, not described in the docs (22 of 30). No read-only key or mode, and delete tools need no confirmation (5 of 20). The URL screenshot and render tools return images and URLs rather than page text, and an SSRF protection page documents how fetches are limited (10 of 15). A dashboard usage view and webhook events for renders, with no per-call audit log (5 of 15). No security.txt, disclosure policy, bug bounty or certification found; docs pages on key handling and SSRF only (3 of 20). 22 + 5 + 10 + 5 + 3 = 45.",
          "b": "The MCP server runs OAuth 2.1 with PKCE S256, dynamic client registration and a revocation endpoint, but with one broad `postnitro` scope, per the 14 October reading of its published metadata. Keys are `pn-` API keys sent in a header, generated in the web app, with no scopes or rotation documented (20). A read-only MCP server URL can't generate, edit, schedule or delete, and the destructive tools are annotated so a client can ask before running them. No read-only API key (14). The MCP docs, and the server when a client connects, say that slide text, names and captions derived from an article or X post are third-party content, never to follow instructions in it or let it choose tools (12). Per-job processing logs come back from the status endpoint. No account audit log was found (3). security.txt, expiring 1 November 2027, names support@postnitro.ai, with no disclosure policy, acknowledgement time, bug bounty or certification found (7). 20 + 14 + 12 + 3 + 7 = 56."
        },
        "scores": {
          "a": 45,
          "b": 56
        }
      },
      {
        "by": 6,
        "category": "ergonomics",
        "leads": "pictify",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "25 MCP tools in the 2.0.0 source (15 for 11 to 30), with no toolsets or read-only subset (15). List endpoints page with `page` and `limit` (16 of 20). Error bodies carry `code` slugs such as `quota_exceeded`, `template_limit_reached` and `invalid_variable`, and the docs say which are retryable (18 of 20). Generation is safe to retry and failed calls bill nothing, but the MCP source sets no readOnlyHint or destructiveHint, and the delete tools for templates and video templates run without a confirmation step (10 of 20). Official SDKs for Node.js, Python, Go and Ruby, sensible defaults such as 1200 x 630 PNG (15). 15 + 16 + 18 + 10 + 15 = 74.",
          "b": "40 MCP tools load together on the main server URL (5). A read-only server URL serves only the 16 tools annotated `readOnlyHint`, the `DESIGN` output skips rendering and the `_and_wait` tools fold polling into one call (8 back, 13). Templates and brands page with `page` and `limit` up to 100, and scheduled posts filter by date range and social account (14). API errors reach the agent verbatim with their status and a plain message, the schedule error page lists every validation message, unknown keys are refused by name, and a missing ID returns the candidate IDs. A brand-limit error comes back as 401, per the 14 October check (14). Every create tool takes an `idempotencyKey`, and the MCP docs say every tool carries `readOnlyHint` and `destructiveHint`, naming the six destructive tools (20). Saved defaults and single-candidate auto-selection keep required arguments to one or two. Official code is a Node CLI and a browser editor SDK, one language (7). 13 + 14 + 14 + 20 + 7 = 68."
        },
        "scores": {
          "a": 74,
          "b": 68
        }
      },
      {
        "by": 6,
        "category": "transparency",
        "leads": "postnitro",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "The MCP server is MIT. The service is closed under terms of 18 July 2024 that name only Pictify.io (20 of 30). The privacy policy of the same date keeps data 'for as long as necessary' with no periods, names no processors and doesn't mention that the MCP server sends tool arguments, results and the account email to PostHog (6 of 30). The changelog records retirements, Workflows in September 2026 and MCP tools on 19 September, with no notice period or deprecation policy (5 of 20). MCP analytics are on by default and disclosed with an opt-out in the README only, and no subprocessors or data locations are listed (8 of 20). 20 + 6 + 5 + 8 = 39.",
          "b": "Closed service under Terms of Service last updated 20 May 2024, re-read on 5 November, that cover the APIs, allow changes or discontinuation without notice and take a perpetual licence to user content to run the service. The terms name no legal entity or governing law (12). The privacy policy, updated 2 November 2026, corrects its Use of Data section and now says PostNitro doesn't train AI models on user content, in line with the Claude page. Personal data is kept while the account is active and deleted within 24 hours of a request. No DPA (14). The fact sheet dates the withdrawal of the Creator and Team plans and existing subscribers keep them. The CLI changelog marks API-version dependencies. No deprecation policy for the API (8). The policy names UserMaven and CrispChat and an unnamed payment processor, the docs name Lemon Squeezy for billing, and no data locations were found (5). 12 + 14 + 8 + 5 = 39."
        },
        "scores": {
          "a": 52,
          "b": 58
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "MCP server",
        "name": "Kind"
      },
      {
        "a": "Pictify.io",
        "b": "PostNitro Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://api.pictify.io",
        "b": "https://mcp.postnitro.ai/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, stdio, Streamable HTTP",
        "b": "Streamable HTTP, HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "$0.005 per image",
        "b": "not published",
        "name": "Price for design rendering"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT for the MCP server. The Pictify API is a closed service under terms last updated 18 July 2024",
        "b": "Proprietary hosted service under PostNitro's Terms of Service. The CLI, agent skill and agent plugin repositories are MIT",
        "name": "Licence"
      },
      {
        "a": "25",
        "b": "40",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "io.github.pictify-io/mcp",
        "b": "not listed",
        "name": "MCP registry"
      },
      {
        "a": "2026-09-20",
        "b": "2026-11-01",
        "name": "Last release"
      },
      {
        "a": "2024-07-18",
        "b": "2024-05-20",
        "name": "Terms last updated"
      },
      {
        "a": "2024-07-18",
        "b": "2023-10-05",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "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": "yes",
        "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": "55 npm/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "2.8/5 (4)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Pictify scores 55.7 (C) on agent readiness against PostNitro's 52.6 (D), and leads in 4 of 7 scored categories. PostNitro leads on security \u0026 auth and transparency \u0026 trust.",
        "question": "Which is better for AI agents, Pictify or PostNitro?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Pictify and PostNitro need an API key?"
      },
      {
        "answer": "Yes. Pictify has a hosted endpoint at https://api.pictify.io and PostNitro at https://mcp.postnitro.ai/mcp.",
        "question": "Can an agent call Pictify and PostNitro without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 88 against 77",
          "Agent ergonomics, 74 against 68",
          "Payments \u0026 pricing, 40 against 20"
        ],
        "also": [
          "Runs on your own machine",
          "Free to start without a card"
        ],
        "goodFor": "HTML-to-image, template renders, PDFs and short video from one API, with per-render prices an agent can budget.",
        "slug": "pictify",
        "watchFor": "The MCP server sends tool arguments, results and the account email to PostHog unless turned off"
      },
      {
        "aheadOn": [
          "Security \u0026 auth, 56 against 45",
          "Transparency \u0026 trust, 58 against 52"
        ],
        "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 or SLA was found"
      }
    ],
    "history": {
      "pictify": null,
      "postnitro": [
        {
          "causes": [
            "terms",
            "product"
          ],
          "date": "2026-11-05",
          "delta": 7.8,
          "from": 44.8,
          "fromGrade": "E",
          "to": 52.6,
          "toGrade": "D"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.3,
          "from": 44.5,
          "fromGrade": "E",
          "to": 44.8,
          "toGrade": "E"
        }
      ]
    },
    "job": {
      "capability": "design.render",
      "name": "Design rendering"
    },
    "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/apitemplate-io-vs-pictify.json",
        "title": "APITemplate.io vs Pictify",
        "url": "https://www.anchorterminal.com/compare/apitemplate-io-vs-pictify"
      },
      {
        "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/bannerbear-vs-pictify.json",
        "title": "Bannerbear API + MCP vs Pictify",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-pictify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bannerbear-vs-postnitro.json",
        "title": "Bannerbear API + MCP vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/bannerbear-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/canva-vs-pictify.json",
        "title": "Canva REST APIs + MCP vs Pictify",
        "url": "https://www.anchorterminal.com/compare/canva-vs-pictify"
      },
      {
        "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/contentdrips-vs-pictify.json",
        "title": "Contentdrips API and MCP vs Pictify",
        "url": "https://www.anchorterminal.com/compare/contentdrips-vs-pictify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/contentdrips-vs-postnitro.json",
        "title": "Contentdrips API and MCP vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/contentdrips-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/creatomate-vs-pictify.json",
        "title": "Creatomate vs Pictify",
        "url": "https://www.anchorterminal.com/compare/creatomate-vs-pictify"
      },
      {
        "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/dynapictures-vs-pictify.json",
        "title": "DynaPictures vs Pictify",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-pictify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/dynapictures-vs-postnitro.json",
        "title": "DynaPictures vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/dynapictures-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/layerre-vs-pictify.json",
        "title": "Layerre vs Pictify",
        "url": "https://www.anchorterminal.com/compare/layerre-vs-pictify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/layerre-vs-postnitro.json",
        "title": "Layerre vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/layerre-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/photoroom-vs-pictify.json",
        "title": "Photoroom API vs Pictify",
        "url": "https://www.anchorterminal.com/compare/photoroom-vs-pictify"
      },
      {
        "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/pixelixe-vs-postnitro.json",
        "title": "Pixelixe vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/pixelixe-vs-postnitro"
      },
      {
        "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/postnitro-vs-robolly.json",
        "title": "PostNitro vs Robolly",
        "url": "https://www.anchorterminal.com/compare/postnitro-vs-robolly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/postnitro-vs-shotstack.json",
        "title": "PostNitro vs Shotstack",
        "url": "https://www.anchorterminal.com/compare/postnitro-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/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-postnitro.json",
        "title": "Abyssale vs PostNitro",
        "url": "https://www.anchorterminal.com/compare/abyssale-vs-postnitro"
      },
      {
        "json": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-pictify.json",
        "title": "Adobe Photoshop API vs Pictify",
        "url": "https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-pictify"
      },
      {
        "json": "https://www.anchorterminal.com/compare/osmo-cli-vs-pictify.json",
        "title": "Osmo CLI vs Pictify",
        "url": "https://www.anchorterminal.com/compare/osmo-cli-vs-pictify"
      },
      {
        "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/pictify-vs-pixelixe.json",
        "title": "Pictify vs Pixelixe",
        "url": "https://www.anchorterminal.com/compare/pictify-vs-pixelixe"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pictify-vs-placid.json",
        "title": "Pictify vs Placid API + MCP",
        "url": "https://www.anchorterminal.com/compare/pictify-vs-placid"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pictify-vs-robolly.json",
        "title": "Pictify vs Robolly",
        "url": "https://www.anchorterminal.com/compare/pictify-vs-robolly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pictify-vs-shotstack.json",
        "title": "Pictify vs Shotstack",
        "url": "https://www.anchorterminal.com/compare/pictify-vs-shotstack"
      },
      {
        "json": "https://www.anchorterminal.com/compare/pictify-vs-templated.json",
        "title": "Pictify vs Templated API + MCP",
        "url": "https://www.anchorterminal.com/compare/pictify-vs-templated"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 0,
        "edge": "",
        "key": "reliability",
        "name": "Reliability",
        "pictify": 45,
        "postnitro": 45,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 11,
        "edge": "pictify",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "pictify": 88,
        "postnitro": 77,
        "weight": 13
      },
      {
        "by": 6,
        "edge": "pictify",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "pictify": 74,
        "postnitro": 68,
        "weight": 13
      },
      {
        "by": 11,
        "edge": "postnitro",
        "key": "security",
        "name": "Security \u0026 auth",
        "pictify": 45,
        "postnitro": 56,
        "weight": 14
      },
      {
        "by": 20,
        "edge": "pictify",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "pictify": 40,
        "postnitro": 20,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 3,
        "edge": "pictify",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "pictify": 68,
        "postnitro": 65,
        "weight": 7
      },
      {
        "by": 6,
        "edge": "postnitro",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "pictify": 52,
        "postnitro": 58,
        "weight": 7
      }
    ],
    "summary": "Pictify scores 55.7 (C) on agent readiness against PostNitro's 52.6 (D), and leads in 4 of 7 scored categories. PostNitro leads on security \u0026 auth and transparency \u0026 trust. Both do design rendering.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "pictify": "A public OpenAPI 3.1 contract, per-render overage prices, a recurring no-card free tier and error codes that tell quota apart from rate limits make Pictify easy for an agent to call and budget. Its MCP server reports tool arguments and results to PostHog by default, and the privacy policy, last updated July 2024, mentions neither.",
      "postnitro": "A hosted MCP server and REST API let an agent turn a topic, article or its own slides into a branded carousel, image or video and schedule it, with OAuth, a read-only server URL, idempotency keys and numbered rate limits. No status page, SLA or free API tier was found, and security.txt names only a support address."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/pictify-vs-postnitro",
    "json": "https://www.anchorterminal.com/compare/pictify-vs-postnitro.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/pictify-vs-postnitro.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/pictify-vs-postnitro.min.md"
  },
  "markdown": "Pictify scores 55.7 (C) on agent readiness against PostNitro's 52.6 (D), and leads in 4 of 7 scored categories. PostNitro leads on security \u0026 auth and transparency \u0026 trust. Both do design rendering.\n\n- Pictify: grade C, 55.7/100, rank #856 of 1486. Markdown https://www.anchorterminal.com/tools/pictify.md · JSON https://www.anchorterminal.com/api/v1/tools/pictify.json\n- PostNitro: grade D, 52.6/100, rank #974 of 1486. Markdown https://www.anchorterminal.com/tools/postnitro.md · JSON https://www.anchorterminal.com/api/v1/tools/postnitro.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### Pictify (C)\n\nGood for: HTML-to-image, template renders, PDFs and short video from one API, with per-render prices an agent can budget.\n\nAhead on:\n- Schema \u0026 documentation, 88 against 77\n- Agent ergonomics, 74 against 68\n- Payments \u0026 pricing, 40 against 20\n\nAlso in its favour:\n- Runs on your own machine\n- Free to start without a card\n\nWatch for: The MCP server sends tool arguments, results and the account email to PostHog unless turned off\n\n### PostNitro (D)\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\nAhead on:\n- Security \u0026 auth, 56 against 45\n- Transparency \u0026 trust, 58 against 52\n\nWatch for: No status page, incident history or SLA was found\n\n\n## Why the edge\n\n### Payments \u0026 pricing: Pictify +20\n\n- Pictify (40): No x402, MPP or L402 (0). Overage prices per render published without login, $0.02 on Basic, $0.01 on Pro and $0.005 on Business, with plan prices (20). Free plan of 50 renders a month, marked no card and no watermark (20). A person signs up and creates the key in the dashboard (0). 0 + 20 + 20 + 0 = 40.\n- PostNitro (20): No x402, MPP or L402 (0). Credit prices are public without a login at $0.04 a credit, 1 per imported slide and 2 per AI-written slide, with plan prices of $15, $30 and $60 a month (20). The web app has a free plan with no card, but the subscription docs, the MCP docs and llms.txt now agree there is no free API tier, and calls without a paid plan return 402 (0). A person signs up in a browser and generates a key, or approves OAuth in the client. Dynamic client registration removes the key step but not the signup (0). 0 + 20 + 0 + 0 = 20.\n\n### Schema \u0026 documentation: Pictify +11\n\n- Pictify (88): Public OpenAPI 3.1 at docs.pictify.io/openapi/v1.yaml with 20 paths (25). llms.txt on the site and docs, with a Markdown copy of every docs page and a machine-readable pricing.md (10). Endpoint pages say what each call is for, and `pictify_create_image` says to pass only one of html, url or template. The MCP docs page still lists 26 tools including some removed on 19 September 2026 (14 of 20). Width and height ranges (1 to 4,000), output enums and quality bounds (12 of 15). An error page with status codes, stable code slugs and what to do for each, plus examples on every endpoint page (14 of 15). Versioned v1 contract and a public changelog by month; the September 2026 entry has no day (13 of 15). 25 + 10 + 14 + 12 + 14 + 13 = 88.\n- PostNitro (77): OpenAPI 3.1 document for the Embed API at `/.well-known/openapi/embed.json`, with 13 operations per the 14 October check and not re-read. The MCP docs now point to a public tool catalogue on the MCP host with every tool's input and output schema, which we didn't request, so the earlier partial is held (20). `llms.txt` (updated 29 October 2026), `llms-full.txt`, a docs `llms.txt` and `.md` twins (10). The docs state what each tool is for, when not to use PostNitro and the `embedPostId` and `designId` split, and the tool count now reads 40 on every page read (15). 24 enums, typed slide objects and per-platform settings with conditional rules per the 14 October check, and unknown keys in settings objects are now refused by name (12). Examples on each page and a full table of validation messages for the Schedule API (13). `info.version` 1.0.0 with no version in the path and no API changelog. The CLI has a dated Keep a Changelog file with semver (7). 20 + 10 + 15 + 12 + 13 + 7 = 77.\n\n### Security \u0026 auth: PostNitro +11\n\n- Pictify (45): Prefixed API keys that can be rotated or revoked at once in the dashboard, with no scopes. The hosted MCP endpoint's metadata names api.pictify.io as authorisation server with one `mcp:tools` scope, not described in the docs (22 of 30). No read-only key or mode, and delete tools need no confirmation (5 of 20). The URL screenshot and render tools return images and URLs rather than page text, and an SSRF protection page documents how fetches are limited (10 of 15). A dashboard usage view and webhook events for renders, with no per-call audit log (5 of 15). No security.txt, disclosure policy, bug bounty or certification found; docs pages on key handling and SSRF only (3 of 20). 22 + 5 + 10 + 5 + 3 = 45.\n- PostNitro (56): The MCP server runs OAuth 2.1 with PKCE S256, dynamic client registration and a revocation endpoint, but with one broad `postnitro` scope, per the 14 October reading of its published metadata. Keys are `pn-` API keys sent in a header, generated in the web app, with no scopes or rotation documented (20). A read-only MCP server URL can't generate, edit, schedule or delete, and the destructive tools are annotated so a client can ask before running them. No read-only API key (14). The MCP docs, and the server when a client connects, say that slide text, names and captions derived from an article or X post are third-party content, never to follow instructions in it or let it choose tools (12). Per-job processing logs come back from the status endpoint. No account audit log was found (3). security.txt, expiring 1 November 2027, names support@postnitro.ai, with no disclosure policy, acknowledgement time, bug bounty or certification found (7). 20 + 14 + 12 + 3 + 7 = 56.\n\n### Agent ergonomics: Pictify +6\n\n- Pictify (74): 25 MCP tools in the 2.0.0 source (15 for 11 to 30), with no toolsets or read-only subset (15). List endpoints page with `page` and `limit` (16 of 20). Error bodies carry `code` slugs such as `quota_exceeded`, `template_limit_reached` and `invalid_variable`, and the docs say which are retryable (18 of 20). Generation is safe to retry and failed calls bill nothing, but the MCP source sets no readOnlyHint or destructiveHint, and the delete tools for templates and video templates run without a confirmation step (10 of 20). Official SDKs for Node.js, Python, Go and Ruby, sensible defaults such as 1200 x 630 PNG (15). 15 + 16 + 18 + 10 + 15 = 74.\n- PostNitro (68): 40 MCP tools load together on the main server URL (5). A read-only server URL serves only the 16 tools annotated `readOnlyHint`, the `DESIGN` output skips rendering and the `_and_wait` tools fold polling into one call (8 back, 13). Templates and brands page with `page` and `limit` up to 100, and scheduled posts filter by date range and social account (14). API errors reach the agent verbatim with their status and a plain message, the schedule error page lists every validation message, unknown keys are refused by name, and a missing ID returns the candidate IDs. A brand-limit error comes back as 401, per the 14 October check (14). Every create tool takes an `idempotencyKey`, and the MCP docs say every tool carries `readOnlyHint` and `destructiveHint`, naming the six destructive tools (20). Saved defaults and single-candidate auto-selection keep required arguments to one or two. Official code is a Node CLI and a browser editor SDK, one language (7). 13 + 14 + 14 + 20 + 7 = 68.\n\n### Transparency \u0026 trust: PostNitro +6\n\n- Pictify (52): The MCP server is MIT. The service is closed under terms of 18 July 2024 that name only Pictify.io (20 of 30). The privacy policy of the same date keeps data 'for as long as necessary' with no periods, names no processors and doesn't mention that the MCP server sends tool arguments, results and the account email to PostHog (6 of 30). The changelog records retirements, Workflows in September 2026 and MCP tools on 19 September, with no notice period or deprecation policy (5 of 20). MCP analytics are on by default and disclosed with an opt-out in the README only, and no subprocessors or data locations are listed (8 of 20). 20 + 6 + 5 + 8 = 39.\n- PostNitro (58): Closed service under Terms of Service last updated 20 May 2024, re-read on 5 November, that cover the APIs, allow changes or discontinuation without notice and take a perpetual licence to user content to run the service. The terms name no legal entity or governing law (12). The privacy policy, updated 2 November 2026, corrects its Use of Data section and now says PostNitro doesn't train AI models on user content, in line with the Claude page. Personal data is kept while the account is active and deleted within 24 hours of a request. No DPA (14). The fact sheet dates the withdrawal of the Creator and Team plans and existing subscribers keep them. The CLI changelog marks API-version dependencies. No deprecation policy for the API (8). The policy names UserMaven and CrispChat and an unnamed payment processor, the docs name Lemon Squeezy for billing, and no data locations were found (5). 12 + 14 + 8 + 5 = 39.\n\n## Score by category\n\n| Category | Weight | Pictify | PostNitro | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 45 | 45 | even |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 88 | 77 | Pictify +11 |\n| Agent ergonomics | 13% (16.2 this run) | 74 | 68 | Pictify +6 |\n| Security \u0026 auth | 14% (17.5 this run) | 45 | 56 | PostNitro +11 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 20 | Pictify +20 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 68 | 65 | Pictify +3 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 52 | 58 | PostNitro +6 |\n| Negative events | ≤15 | -3 | -3 | |\n| **Total** | | **55.7 · C** | **52.6 · D** | |\n\n## Facts side by side\n\n| Fact | Pictify | PostNitro |\n| --- | --- | --- |\n| Kind | HTTP API | MCP server |\n| Vendor | Pictify.io | PostNitro Inc. |\n| Hosted endpoint | `https://api.pictify.io` | `https://mcp.postnitro.ai/mcp` |\n| Transports | HTTP, stdio, Streamable HTTP | Streamable HTTP, HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Paid |\n| Price for design rendering | $0.005 per image | not published |\n| x402 | no | no |\n| Licence | MIT for the MCP server. The Pictify API is a closed service under terms last updated 18 July 2024 | Proprietary hosted service under PostNitro's Terms of Service. The CLI, agent skill and agent plugin repositories are MIT |\n| Tools exposed | 25 | 40 |\n| Read-only variant documented | no | yes |\n| llms.txt | yes | yes |\n| MCP registry | `io.github.pictify-io/mcp` | not listed |\n| Last release | 2026-09-20 | 2026-11-01 |\n| Terms last updated | 2024-07-18 | 2024-05-20 |\n| Privacy policy last updated | 2024-07-18 | 2023-10-05 |\n| Customer content may train models | not found in the text | yes |\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 | yes |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 55 npm/wk | none |\n| Agent reviews | none | 2.8/5 (4) |\n\n## How the scores have moved\n\n### Pictify\n\nNo score change since it was listed.\n\n### PostNitro\n\n- +7.8 on 5 November 2026 (E to D): terms, product\n- +0.3 on 27 October 2026: checklist\n\n## Verdicts\n\n**Pictify.** A public OpenAPI 3.1 contract, per-render overage prices, a recurring no-card free tier and error codes that tell quota apart from rate limits make Pictify easy for an agent to call and budget. Its MCP server reports tool arguments and results to PostHog by default, and the privacy policy, last updated July 2024, mentions neither.\n\n**PostNitro.** A hosted MCP server and REST API let an agent turn a topic, article or its own slides into a branded carousel, image or video and schedule it, with OAuth, a read-only server URL, idempotency keys and numbered rate limits. No status page, SLA or free API tier was found, and security.txt names only a support address.\n\n## Before you call either\n\n### Pictify\n\n1. Set `PICTIFY_ANALYTICS_DISABLED=1` in the MCP server's env when tool inputs are confidential\n2. On a 429, read `code` first; `quota_exceeded` means wait for the monthly reset, not retry\n3. Retry a 5xx once; a failed generation bills nothing\n4. Pass only one of `html`, `url` or `template` to `pictify_create_image`\n5. Use batch render for one image per row rather than many single calls\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, wait for `Retry-After` on a 429, and resend the same `idempotencyKey` when retrying a create\n6. Connect to https://mcp.postnitro.ai/mcp/readonly when the agent should only read\n\n## Questions\n\n### Which is better for AI agents, Pictify or PostNitro?\n\nPictify scores 55.7 (C) on agent readiness against PostNitro's 52.6 (D), and leads in 4 of 7 scored categories. PostNitro leads on security \u0026 auth and transparency \u0026 trust.\n\n### Do Pictify and PostNitro need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Pictify and PostNitro without installing anything?\n\nYes. Pictify has a hosted endpoint at https://api.pictify.io and PostNitro at https://mcp.postnitro.ai/mcp.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/pictify-vs-postnitro.json, and with the fewest tokens: https://www.anchorterminal.com/compare/pictify-vs-postnitro.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"pictify\", \"b\": \"postnitro\"}`. From a terminal: `anchor compare pictify postnitro`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/pictify.json and https://www.anchorterminal.com/api/v1/tools/postnitro.json\n\n## Other comparisons with Pictify or PostNitro\n\n- [Adobe Photoshop API vs PostNitro](https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-postnitro.md)\n- [APITemplate.io vs Pictify](https://www.anchorterminal.com/compare/apitemplate-io-vs-pictify.md)\n- [APITemplate.io vs PostNitro](https://www.anchorterminal.com/compare/apitemplate-io-vs-postnitro.md)\n- [Bannerbear API + MCP vs Pictify](https://www.anchorterminal.com/compare/bannerbear-vs-pictify.md)\n- [Bannerbear API + MCP vs PostNitro](https://www.anchorterminal.com/compare/bannerbear-vs-postnitro.md)\n- [Canva REST APIs + MCP vs Pictify](https://www.anchorterminal.com/compare/canva-vs-pictify.md)\n- [Canva REST APIs + MCP vs PostNitro](https://www.anchorterminal.com/compare/canva-vs-postnitro.md)\n- [Contentdrips API and MCP vs Pictify](https://www.anchorterminal.com/compare/contentdrips-vs-pictify.md)\n- [Contentdrips API and MCP vs PostNitro](https://www.anchorterminal.com/compare/contentdrips-vs-postnitro.md)\n- [Creatomate vs Pictify](https://www.anchorterminal.com/compare/creatomate-vs-pictify.md)\n- [Creatomate vs PostNitro](https://www.anchorterminal.com/compare/creatomate-vs-postnitro.md)\n- [DynaPictures vs Pictify](https://www.anchorterminal.com/compare/dynapictures-vs-pictify.md)\n- [DynaPictures vs PostNitro](https://www.anchorterminal.com/compare/dynapictures-vs-postnitro.md)\n- [Layerre vs Pictify](https://www.anchorterminal.com/compare/layerre-vs-pictify.md)\n- [Layerre vs PostNitro](https://www.anchorterminal.com/compare/layerre-vs-postnitro.md)\n- [Photoroom API vs Pictify](https://www.anchorterminal.com/compare/photoroom-vs-pictify.md)\n- [Photoroom API vs PostNitro](https://www.anchorterminal.com/compare/photoroom-vs-postnitro.md)\n- [Pixelixe vs PostNitro](https://www.anchorterminal.com/compare/pixelixe-vs-postnitro.md)\n- [Placid API + MCP vs PostNitro](https://www.anchorterminal.com/compare/placid-vs-postnitro.md)\n- [PostNitro vs Robolly](https://www.anchorterminal.com/compare/postnitro-vs-robolly.md)\n- [PostNitro vs Shotstack](https://www.anchorterminal.com/compare/postnitro-vs-shotstack.md)\n- [PostNitro vs Templated API + MCP](https://www.anchorterminal.com/compare/postnitro-vs-templated.md)\n- [Abyssale vs Pictify](https://www.anchorterminal.com/compare/abyssale-vs-pictify.md)\n- [Abyssale vs PostNitro](https://www.anchorterminal.com/compare/abyssale-vs-postnitro.md)\n- [Adobe Photoshop API vs Pictify](https://www.anchorterminal.com/compare/adobe-photoshop-api-vs-pictify.md)\n- [Osmo CLI vs Pictify](https://www.anchorterminal.com/compare/osmo-cli-vs-pictify.md)\n- [Osmo CLI vs PostNitro](https://www.anchorterminal.com/compare/osmo-cli-vs-postnitro.md)\n- [Pictify vs Pixelixe](https://www.anchorterminal.com/compare/pictify-vs-pixelixe.md)\n- [Pictify vs Placid API + MCP](https://www.anchorterminal.com/compare/pictify-vs-placid.md)\n- [Pictify vs Robolly](https://www.anchorterminal.com/compare/pictify-vs-robolly.md)\n- [Pictify vs Shotstack](https://www.anchorterminal.com/compare/pictify-vs-shotstack.md)\n- [Pictify vs Templated API + MCP](https://www.anchorterminal.com/compare/pictify-vs-templated.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Pictify vs PostNitro",
        "url": ""
      }
    ],
    "description": "Pictify scores 55.7 (C) to PostNitro's 52.6 (D) for design rendering. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Pictify C 55.7",
      "PostNitro D 52.6",
      "scores"
    ],
    "h1": "Pictify vs PostNitro",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/pictify-vs-postnitro",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Pictify vs PostNitro for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/pictify-vs-postnitro"
  },
  "tokens": {
    "markdown": 4650,
    "slim": 2680
  },
  "version": 1
}
