{
 "slug": "postiz",
 "name": "Postiz",
 "url": "https://postiz.com",
 "domain": "postiz.com",
 "category": "social-media-scheduling",
 "category_name": "Social media scheduling",
 "tested_at": "2026-10-02",
 "run": "20261002T204905Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261001T061224Z",
   "date": "2026-10-01",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": null,
    "driver": null,
    "signed": false,
    "inbox": null,
    "robots": "start"
   }
  },
  {
   "run": "20261001T210554Z",
   "date": "2026-10-01",
   "level": 2,
   "engine": {
    "runner": "omp",
    "model": null,
    "driver": null,
    "signed": true,
    "inbox": null,
    "robots": "start"
   },
   "why": "noise"
  },
  {
   "run": "20261002T204905Z",
   "date": "2026-10-02",
   "level": 2,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 2,
    "signed": true,
    "inbox": null,
    "robots": "start"
   }
  }
 ],
 "level": 2,
 "level_name": "Gets in",
 "level_selfhost": null,
 "entry": "self-start",
 "door": {
  "passed": 2,
  "tries": 3,
  "self_start": true
 },
 "badges": [],
 "stages": [
  {
   "key": "in",
   "label": "Access",
   "state": "yes",
   "text": "Gets in on its own: sign-up in a browser"
  },
  {
   "key": "work",
   "label": "Use",
   "state": "unreached",
   "text": "Most of the core needs a paid plan, so the work is not measured"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "Card checkout",
   "value": "not_tried",
   "route": "card_checkout",
   "why": "no_card"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Nothing to cancel; can't delete its account",
   "at": "delete",
   "left": "stuck"
  }
 ],
 "outcomes": [
  {
   "key": "find",
   "label": "Find",
   "state": "yes",
   "text": "Docs agents can read: llms.txt, an OpenAPI and an MCP server",
   "have": [
    "llms_txt",
    "openapi",
    "mcp"
   ]
  },
  {
   "key": "access",
   "label": "Access",
   "state": "yes",
   "text": "Gets in on its own: sign-up in a browser",
   "stage": "in"
  },
  {
   "key": "use",
   "label": "Use",
   "state": "unreached",
   "text": "Most of the core needs a paid plan, so the work is not measured",
   "stage": "work"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "Card checkout",
   "value": "not_tried",
   "route": "card_checkout",
   "why": "no_card",
   "stage": "pay"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "yes",
   "text": "Nothing to cancel; can't delete its account",
   "at": "delete",
   "left": "stuck",
   "stage": "leave"
  }
 ],
 "access": [
  {
   "key": "browser_signup",
   "label": "Sign-up in a browser",
   "routes": [],
   "minutes": 3.5,
   "core": null
  }
 ],
 "minutes": 3.5,
 "next": {
  "to": 3,
  "text": "Next: let a trial or free plan reach the core features"
 },
 "stop": "first_action",
 "core": "0/1",
 "scores": {
  "coverage": 0,
  "reliability": null,
  "resilience": null,
  "setup": 100,
  "surface_coverage": null,
  "docs_accuracy": null,
  "docs_completeness": null
 },
 "parts": {
  "holds_up": null,
  "docs_match": null,
  "setup": 100,
  "security": null,
  "standards": []
 },
 "reliability_method": null,
 "resilience": null,
 "stress": [],
 "surface_audit": null,
 "coverage_core": null,
 "after_wall": null,
 "coverage_source": "computed",
 "driver": {
  "version": 2,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": null,
  "prompt_sha": null,
  "kb_version": null,
  "identity": null
 },
 "methodology": 15,
 "rules_date": "2026-10-15",
 "engine": {
  "runner": "omp",
  "model": "claude-opus-5-5",
  "driver": 2,
  "signed": true,
  "inbox": null,
  "robots": "start"
 },
 "same_level_drives": 2,
 "drives": 3,
 "works_assisted": null,
 "freshness": "fresh",
 "nothing_to_pay": false,
 "core_gated": true,
 "profiles": {},
 "agent_check": null,
 "agent_pass": null,
 "who_gets_in": {
  "server": {
   "state": "in"
  },
  "signed": {
   "state": "page",
   "kind": "home",
   "at": "2026-10-12"
  },
  "browser": {
   "state": "in",
   "measured": false
  },
  "our_key": "pending",
  "robots": null,
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "llms.txt on postiz.com and docs.postiz.com, llms-full.txt, every page as .md with embedded OpenAPI."
  },
  "signup": {
   "status": "browser",
   "note": "Web form only (no documented headless sign-up); no visible CAPTCHA."
  },
  "verify": {
   "status": "browser",
   "note": "Activation mail arrived in ~1 min; link opened in the browser logs you in."
  },
  "credentials": {
   "status": "browser",
   "note": "Documented MCP OAuth with dynamic client registration: DCR and token exchange headless, one consent click in the logged-in browser. API key itself not shown without a subscription."
  },
  "first_call": {
   "status": "headless",
   "note": "MCP initialize/tools/list (19 tools)/integrationList worked without a subscription; public API and CLI return 401 'No subscription found'."
  },
  "first_action": {
   "status": "blocked",
   "note": "No free plan: the whole app is replaced by a plan picker; the 7-day trial needs a card in Stripe embedded checkout. No channel can be connected, so nothing can be created."
  },
  "pay": {
   "status": "",
   "grade": "P1",
   "rails": [
    "Stripe embedded checkout (card)"
   ],
   "first_party": false,
   "rail_scope": "none",
   "trial_path": "card trial",
   "note": "No 402/x402/MPP/L402, no agent-commerce discovery, no billing API. The trial requires a card (authorisation check) in Stripe embedded checkout with Stripe's invisible hCaptcha; we have no card."
  },
  "cancel": {
   "status": "n/a",
   "note": "Nothing to cancel: our agent started no paid plan.",
   "docs_note": "Nothing started. Docs: cancel on the web Billing page, a reason of at least 20 characters, possible retention offer; no API.",
   "docs_grade": "",
   "nothing": "no_plan"
  },
  "delete": {
   "status": "human",
   "note": "Docs: no self-serve account deletion; email support@postiz.com. Not sent (no messages to real people); the account and its OAuth grant remain (Approved Apps page is behind the paywall).",
   "via": "human",
   "left": "stuck",
   "account": true
  }
 },
 "routes": [],
 "checkout": null,
 "docs": null,
 "claims": null,
 "pay_options": {
  "checked": "2026-10-02",
  "source": "drive",
  "options": [
   {
    "id": "stripe-checkout",
    "name": "Stripe Checkout",
    "kind": "checkout",
    "first_party": false,
    "lead": false,
    "networks": [],
    "testnet": false
   }
  ],
  "agentic": [],
  "paid": null,
  "exercised": null,
  "detected_grade": null,
  "trial": {
   "no_card": null,
   "card_required": true,
   "free_plan": null
  },
  "owner_fixes": [
   {
    "title": "Accept x402 or MPP on your API",
    "how": "Answer an unpaid call with 402 and a payment challenge, so an agent pays per call or buys credits without an account or a card."
   },
   {
    "title": "List your plans on Stripe Projects",
    "how": "Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev)."
   },
   {
    "title": "Let a trial start without a card",
    "how": "An agent can try the product before anyone hands it a card; take the card when it buys."
   }
  ]
 },
 "surfaces": {
  "api": true,
  "openapi": true,
  "cli": true,
  "sdk": true,
  "mcp": "official",
  "llms_txt": true,
  "webhooks": true,
  "sandbox": false
 },
 "surface_notes": {
  "api": "REST public/v1, API key or OAuth pos_ token; 401 'No subscription found' without a plan",
  "openapi": "embedded per endpoint in docs .md pages",
  "cli": "npm 'postiz', reads POSTIZ_API_KEY",
  "sdk": "@postiz/node",
  "mcp": "official hosted, OAuth 2.1 + DCR, 19 tools",
  "webhooks": "UI-configured publish webhooks (paid)"
 },
 "can_do": [
  "Read complete agent-oriented docs (llms.txt, llms-full.txt, OpenAPI per endpoint)",
  "Register an MCP OAuth client headless (DCR) and get a token after one consent click",
  "List the MCP tool set"
 ],
 "cannot_do": [
  {
   "what": "Connect a channel, schedule or publish any post",
   "why": "No free plan; the 7-day trial requires a card, so API/CLI return 401 'No subscription found' and the UI is replaced by the plan picker"
  },
  {
   "what": "Start the trial",
   "why": "Card required in Stripe embedded checkout; we have no card"
  },
  {
   "what": "Delete the account",
   "why": "No self-serve deletion; support email only"
  }
 ],
 "blockers": [
  "Card required to start the 7-day trial; no free plan"
 ],
 "tips_for_owner": [
  "Offer a no-card trial or free tier",
  "Add an agent-payable checkout rail",
  "Enforce subscription on the MCP server",
  "Add self-serve account deletion",
  "Make cancel available via API"
 ],
 "tips_for_agents": [
  "Use the hosted MCP (https://mcp.postiz.com/mcp-oauth-dynamic): it supports dynamic client registration and PKCE, so no API key copy-paste is needed; consent needs a logged-in browser once.",
  "Without an active subscription (trial needs a card) the API and CLI answer 401 'No subscription found': have a human start the trial first.",
  "The documented connect-channel route is GET /public/v1/social/{integration}, not /integrations/connect/{integration}.",
  "Self-hosted Postiz has no subscription gate if you can run Docker."
 ],
 "selfhost": {
  "install": {
   "status": "skipped",
   "minutes": 0,
   "note": "no docker in the drive sandbox; Postiz is open source (gitroomhq/postiz-app, docker image ghcr.io/gitroomhq/postiz-app) and self-hosted has no subscription gate"
  }
 },
 "summary": "Postiz is built for agents on paper (llms.txt, OpenAPI, CLI, official MCP with dynamic client registration), and sign-up plus email verification went through in the browser with no CAPTCHA. But there is no free plan and the 7-day trial needs a card, so the API and CLI refuse with 'No subscription found' and no channel or post can be created.",
 "wall": "Card required to start the free trial",
 "plan_scope": "none (no free access)",
 "robots_stop": null,
 "robots": null,
 "plain": {
  "summary": "Postiz is a social-media scheduling tool that publishes to many platforms at once. An agent could read the docs, sign up, verify email, and even get a developer token through the official automation channel, but it could never actually schedule or publish anything because the product has no free plan and starting the trial requires a human's credit card.",
  "can_do": [
   "Read the full developer documentation automatically",
   "Create an account and verify it through the normal sign-up flow",
   "Get a developer connection token without copying and pasting an API key",
   "See the list of available automation commands"
  ],
  "cannot_do": [
   {
    "what": "Connect a social media channel or schedule/publish any post",
    "why": "No free plan exists; the trial requires a credit card"
   },
   {
    "what": "Pay for a plan itself",
    "why": "Only a human credit-card checkout is offered, no agent payment option"
   },
   {
    "what": "Delete the account",
    "why": "Account deletion requires emailing human support"
   }
  ]
 },
 "plan_gated": [
  {
   "capability": "",
   "plan": "any paid plan (7-day trial needs a card)",
   "evidence": "GET api.postiz.com/public/v1/* -> 401 {\"msg\":\"No subscription found\"}; docs: 'There is no free plan'"
  },
  {
   "capability": "",
   "plan": "any paid plan (7-day trial needs a card)",
   "evidence": "GET api.postiz.com/public/v1/* -> 401 {\"msg\":\"No subscription found\"}; docs: 'There is no free plan'"
  },
  {
   "capability": "",
   "plan": "any paid plan (7-day trial needs a card)",
   "evidence": "GET api.postiz.com/public/v1/* -> 401 {\"msg\":\"No subscription found\"}; docs: 'There is no free plan'"
  },
  {
   "capability": "",
   "plan": "any paid plan (7-day trial needs a card)",
   "evidence": "GET api.postiz.com/public/v1/* -> 401 {\"msg\":\"No subscription found\"}; docs: 'There is no free plan'"
  },
  {
   "capability": "",
   "plan": "any paid plan (7-day trial needs a card)",
   "evidence": "GET api.postiz.com/public/v1/* -> 401 {\"msg\":\"No subscription found\"}; docs: 'There is no free plan'"
  },
  {
   "capability": "",
   "plan": "any paid plan (7-day trial needs a card)",
   "evidence": "GET api.postiz.com/public/v1/* -> 401 {\"msg\":\"No subscription found\"}; docs: 'There is no free plan'"
  },
  {
   "capability": "",
   "plan": "any paid plan (7-day trial needs a card)",
   "evidence": "GET api.postiz.com/public/v1/* -> 401 {\"msg\":\"No subscription found\"}; docs: 'There is no free plan'"
  },
  {
   "capability": "",
   "plan": "any paid plan (7-day trial needs a card)",
   "evidence": "GET api.postiz.com/public/v1/* -> 401 {\"msg\":\"No subscription found\"}; docs: 'There is no free plan'"
  },
  {
   "capability": "",
   "plan": "any paid plan (7-day trial needs a card)",
   "evidence": "GET api.postiz.com/public/v1/* -> 401 {\"msg\":\"No subscription found\"}; docs: 'There is no free plan'"
  },
  {
   "capability": "",
   "plan": "any paid plan (7-day trial needs a card)",
   "evidence": "GET api.postiz.com/public/v1/* -> 401 {\"msg\":\"No subscription found\"}; docs: 'There is no free plan'"
  },
  {
   "capability": "",
   "plan": "any paid plan (7-day trial needs a card)",
   "evidence": "GET api.postiz.com/public/v1/* -> 401 {\"msg\":\"No subscription found\"}; docs: 'There is no free plan'"
  },
  {
   "capability": "",
   "plan": "any paid plan (7-day trial needs a card)",
   "evidence": "GET api.postiz.com/public/v1/* -> 401 {\"msg\":\"No subscription found\"}; docs: 'There is no free plan'"
  }
 ],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "group": "Posting",
   "capability": "Schedule a post to one or more channels at a future date/time",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/posts (type: schedule)",
    "mcp": "create_post (PostsTool)",
    "cli": "postiz posts:create -s <date>",
    "ui": "Composer, calendar"
   },
   "check": "GET /public/v1/posts shows the post with state 'QUEUE' and the given date",
   "source": "https://docs.postiz.com/public-api/posts/create; https://docs.postiz.com/general/composer/scheduling"
  },
  {
   "id": "cap-02",
   "group": "Posting",
   "capability": "Publish a post immediately",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/posts (type: now)",
    "mcp": "create_post",
    "cli": "postiz posts:create (immediate)",
    "ui": "Composer, Post now"
   },
   "check": "GET /public/v1/posts/{id} shows state 'PUBLISHED' with a releaseId",
   "source": "https://docs.postiz.com/public-api/introduction; https://docs.postiz.com/general/composer/scheduling"
  },
  {
   "id": "cap-03",
   "group": "Posting",
   "capability": "Tailor content per channel inside one post (global vs per-channel content)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/posts (value[] per integration)",
    "mcp": "create_post",
    "cli": "postiz posts:create",
    "ui": "Composer, per-channel tab"
   },
   "check": "GET /public/v1/posts/{id} shows distinct 'value' content per integration id",
   "source": "https://docs.postiz.com/general/composer/global-vs-per-channel"
  },
  {
   "id": "cap-04",
   "group": "Posting",
   "capability": "Cross-post one draft to 34 supported social/community/blog platforms",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/posts (settings.__type per platform)",
    "mcp": "create_post",
    "cli": "postiz posts:create -i <integration>",
    "ui": "Composer channel picker"
   },
   "check": "GET /public/v1/integrations lists the connected platform and the post appears scheduled against it",
   "source": "https://docs.postiz.com/public-api/introduction#supported-platforms-32-total"
  },
  {
   "id": "cap-05",
   "group": "Posting",
   "capability": "Write a multi-part post (thread/comments) with per-part delay",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/posts (value[] multiple entries)",
    "mcp": "create_post",
    "cli": "postiz posts:create",
    "ui": "Composer, add thread part"
   },
   "check": "GET /public/v1/posts/{id} shows multiple value entries with scheduled delay",
   "source": "https://docs.postiz.com/general/composer/threads-and-comments"
  },
  {
   "id": "cap-06",
   "group": "Posting",
   "capability": "Attach images/video to a post, with alt text and design editing",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/upload then posts.value[].image",
    "mcp": "upload tool",
    "cli": "postiz upload",
    "ui": "Composer, Advanced Picture Editor"
   },
   "check": "GET /public/v1/posts/{id} shows image array with uploaded path",
   "source": "https://docs.postiz.com/general/composer/media; https://docs.postiz.com/public-api/uploads/upload-file"
  },
  {
   "id": "cap-07",
   "group": "Posting",
   "capability": "Generate post text, images, and video with AI in the composer",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/video/generate; video/function",
    "mcp": "generate_video / AI tools",
    "cli": null,
    "ui": "Composer, AI copilot"
   },
   "check": "GET /public/v1/video/{id} (or clipping) shows a completed generated asset in media library",
   "source": "https://docs.postiz.com/general/composer/ai-and-imports; https://docs.postiz.com/public-api/video/generate"
  },
  {
   "id": "cap-08",
   "group": "Posting",
   "capability": "Set a repeating (cyclical) post schedule",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Composer, repeat option"
   },
   "check": "Calendar shows recurring instances of the same post on the configured cadence",
   "source": "https://docs.postiz.com/general/composer/scheduling"
  },
  {
   "id": "cap-09",
   "group": "Posting",
   "capability": "Turn a long YouTube video into captioned vertical clips with draft posts",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": "POST /public/v1/clipping (create/get/list)",
    "mcp": "clipping tools",
    "cli": "postiz clipping:create / status / list",
    "ui": "Agent chat"
   },
   "check": "GET clipping status shows 'completed' with clip URLs and draft posts created per named channel",
   "source": "https://docs.postiz.com/general/clipping; https://docs.postiz.com/public-api/clipping/create"
  },
  {
   "id": "cap-10",
   "group": "Calendar & review",
   "capability": "View, filter and drag-reschedule posts on a day/week/month/list calendar",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET /public/v1/posts (date range)",
    "mcp": "list_posts",
    "cli": "postiz posts:list",
    "ui": "Calendar"
   },
   "check": "GET /public/v1/posts?startDate=...&endDate=... reflects the moved post's new date",
   "source": "https://docs.postiz.com/general/calendar/overview; https://docs.postiz.com/general/calendar/moving-posts"
  },
  {
   "id": "cap-11",
   "group": "Review",
   "capability": "Change a post's state between draft and scheduled",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "PUT /public/v1/posts/{id}/status",
    "mcp": "update_post_status",
    "cli": null,
    "ui": "Composer, Save as Draft / Schedule"
   },
   "check": "GET /public/v1/posts/{id} shows state changed from DRAFT to QUEUE",
   "source": "https://docs.postiz.com/public-api/posts/change-status"
  },
  {
   "id": "cap-12",
   "group": "Review",
   "capability": "Delete a scheduled/draft/published post (single or whole group)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "DELETE /public/v1/posts/{id}; DELETE /public/v1/posts/group/{groupId}",
    "mcp": "delete_post",
    "cli": "postiz posts:delete",
    "ui": "Calendar post menu"
   },
   "check": "GET /public/v1/posts/{id} returns 404",
   "source": "https://docs.postiz.com/public-api/posts/delete; https://docs.postiz.com/public-api/posts/delete-by-group"
  },
  {
   "id": "cap-13",
   "group": "Review",
   "capability": "Share a public preview link of a post for client comment/approval",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Calendar, hover post, Preview"
   },
   "check": "Opening the preview URL unauthenticated shows the rendered post and a comment box, and submitted comments appear back on the post in Postiz",
   "source": "https://docs.postiz.com/general/approvals"
  },
  {
   "id": "cap-14",
   "group": "Channels",
   "capability": "Connect a social/community/blog channel via OAuth or credentials",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET /public/v1/integrations/connect/{integration}",
    "mcp": null,
    "cli": "postiz integrations:list",
    "ui": "Add Channel"
   },
   "check": "GET /public/v1/integrations lists the new channel with status connected",
   "source": "https://docs.postiz.com/public-api/integrations/connect; https://docs.postiz.com/general/channels/connect"
  },
  {
   "id": "cap-15",
   "group": "Channels",
   "capability": "Manage a channel: reconnect, rename, disable, delete",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "DELETE /public/v1/integrations/{id}",
    "mcp": null,
    "cli": null,
    "ui": "Channel menu"
   },
   "check": "GET /public/v1/integrations no longer lists the deleted channel id, and its scheduled posts are removed too",
   "source": "https://docs.postiz.com/public-api/integrations/delete; https://docs.postiz.com/general/channels/manage"
  },
  {
   "id": "cap-16",
   "group": "Channels",
   "capability": "Set a channel's normal posting time slots and find the next available slot",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /public/v1/integrations/{id}/slot",
    "mcp": "find_slot",
    "cli": null,
    "ui": "Channel settings, time slots"
   },
   "check": "GET find-slot returns a timestamp consistent with the configured slots, and a new post defaults to it",
   "source": "https://docs.postiz.com/public-api/integrations/find-slot; https://docs.postiz.com/general/channels/time-slots"
  },
  {
   "id": "cap-17",
   "group": "Channels",
   "capability": "Group channels into client/customer groups and filter calendar by client",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /public/v1/integrations/groups",
    "mcp": null,
    "cli": null,
    "ui": "Channel sidebar, Move / add to group"
   },
   "check": "GET /public/v1/integrations/groups lists the customer, and calendar filtered to it shows only its channels' posts",
   "source": "https://docs.postiz.com/public-api/integrations/groups; https://docs.postiz.com/general/channels/customers"
  },
  {
   "id": "cap-18",
   "group": "Channels",
   "capability": "Generate an invite link so a client connects their own channel without a Postiz account",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Channel sidebar, invite button"
   },
   "check": "Client opens the invite link, authorizes, and the channel appears in the organisation's integration list",
   "source": "https://docs.postiz.com/general/channels/customers"
  },
  {
   "id": "cap-19",
   "group": "AI agent / automation",
   "capability": "Chat with an AI agent to draft/schedule posts and generate media conversationally",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Agent section"
   },
   "check": "Sending a chat instruction produces a prefilled composer or scheduled post visible on the calendar",
   "source": "https://docs.postiz.com/general/agents"
  },
  {
   "id": "cap-20",
   "group": "AI agent / automation",
   "capability": "Drive Postiz from an external AI client (Claude, ChatGPT, Cursor) via MCP server",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "full tool set (see /mcp/tools)",
    "cli": null,
    "ui": null
   },
   "check": "MCP client's tools/list call against the Postiz MCP server returns the documented tool set and a create_post call results in a new post",
   "source": "https://docs.postiz.com/mcp/introduction; https://docs.postiz.com/mcp/tools"
  },
  {
   "id": "cap-21",
   "group": "Automation",
   "capability": "Auto-repost or auto-comment a post when it crosses a likes threshold (Plugs)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Plugs section"
   },
   "check": "A published post that crosses the configured like threshold gets an automatic repost or follow-up comment logged against it",
   "source": "https://docs.postiz.com/general/automations/plugs"
  },
  {
   "id": "cap-22",
   "group": "Automation",
   "capability": "Auto-post from an RSS feed on a schedule, with optional AI rewriting",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Settings, Auto Post"
   },
   "check": "A new item in the configured RSS feed produces a new scheduled/published post on the chosen channels",
   "source": "https://docs.postiz.com/general/automations/auto-post-rss"
  },
  {
   "id": "cap-23",
   "group": "Automation",
   "capability": "Register a webhook that fires when a post publishes",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Settings, Webhooks"
   },
   "check": "Send Test (or a real publish) delivers an HTTP POST to the configured URL with the publish payload",
   "source": "https://docs.postiz.com/general/automations/webhooks"
  },
  {
   "id": "cap-24",
   "group": "Automation",
   "capability": "Pull generated media from a connected third-party service into a post",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Composer, third-party import"
   },
   "check": "Media imported from the third-party integration appears in the media library attached to the post",
   "source": "https://docs.postiz.com/general/automations/third-party"
  },
  {
   "id": "cap-25",
   "group": "Analytics",
   "capability": "View platform-level analytics for a channel (followers, impressions, engagement)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /public/v1/analytics/{integrationId}",
    "mcp": "get_platform_analytics",
    "cli": "postiz analytics:platform",
    "ui": "Analytics page"
   },
   "check": "GET /public/v1/analytics/{id} returns numeric metrics matching the Analytics page for that channel",
   "source": "https://docs.postiz.com/public-api/analytics/platform; https://docs.postiz.com/general/analytics"
  },
  {
   "id": "cap-26",
   "group": "Analytics",
   "capability": "View per-post analytics (likes, comments, shares, impressions)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /public/v1/posts/{id}/analytics",
    "mcp": "get_post_analytics",
    "cli": "postiz analytics:post",
    "ui": "Post actions, stats"
   },
   "check": "GET post analytics returns metrics that match the post's stats panel in the UI",
   "source": "https://docs.postiz.com/public-api/analytics/post; https://docs.postiz.com/general/posts/actions-and-stats"
  },
  {
   "id": "cap-27",
   "group": "Posts",
   "capability": "Duplicate an existing post",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Post actions menu"
   },
   "check": "A new post with identical content/settings and a new id appears on the calendar",
   "source": "https://docs.postiz.com/general/posts/actions-and-stats"
  },
  {
   "id": "cap-28",
   "group": "Posts",
   "capability": "Reconnect a published post to its actual platform content when releaseId is missing",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /public/v1/posts/{id}/missing-content; PUT /public/v1/posts/{id}/release-id",
    "mcp": "get_missing_content / update_release_id",
    "cli": "postiz posts:missing / posts:connect",
    "ui": null
   },
   "check": "GET /public/v1/posts/{id} shows releaseId updated from 'missing' to the real platform id, enabling analytics",
   "source": "https://docs.postiz.com/public-api/posts/missing-content; https://docs.postiz.com/public-api/posts/update-release-id"
  },
  {
   "id": "cap-29",
   "group": "Posts",
   "capability": "Update an existing post's provider-specific settings without touching content/date",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "PUT /public/v1/posts/{id}/settings",
    "mcp": "update_post_settings",
    "cli": null,
    "ui": "Composer"
   },
   "check": "GET /public/v1/posts/{id} shows the merged settings keys changed while content and date remain identical",
   "source": "https://docs.postiz.com/public-api/posts/settings"
  },
  {
   "id": "cap-30",
   "group": "Media",
   "capability": "Store, search and reuse uploaded/generated media in a library",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /public/v1/upload; POST /public/v1/upload-from-url",
    "mcp": "upload tool",
    "cli": "postiz upload",
    "ui": "Media section"
   },
   "check": "Uploaded file appears searchable by filename in the Media section and selectable from the composer",
   "source": "https://docs.postiz.com/general/media-library; https://docs.postiz.com/public-api/uploads/upload-file"
  },
  {
   "id": "cap-31",
   "group": "Productivity",
   "capability": "Save a channel selection with settings as a reusable Set",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Settings, Sets"
   },
   "check": "Starting a new post offers the saved set, and selecting it restores the same channels and settings",
   "source": "https://docs.postiz.com/general/settings/reusables"
  },
  {
   "id": "cap-32",
   "group": "Productivity",
   "capability": "Save a reusable signature block, optionally auto-added to every new post",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Settings, Signatures"
   },
   "check": "A new composer opens with the auto-add signature already present, or the signature button inserts it at the cursor",
   "source": "https://docs.postiz.com/general/settings/reusables"
  },
  {
   "id": "cap-33",
   "group": "Team",
   "capability": "Invite team members and assign roles (User, Admin, Super Admin)",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Settings, Teams"
   },
   "check": "Invited member appears in the Teams list with the assigned role after accepting the invite",
   "source": "https://docs.postiz.com/general/settings/team"
  },
  {
   "id": "cap-34",
   "group": "Developer access",
   "capability": "Issue an API key and register an OAuth app for third-party integrations",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": "OAuth2 /public-api/oauth flow",
    "mcp": null,
    "cli": null,
    "ui": "Settings, Developers"
   },
   "check": "A request authorized with the issued key against GET /public/v1/integrations/is-connected returns success",
   "source": "https://docs.postiz.com/general/settings/developers; https://docs.postiz.com/public-api/oauth"
  },
  {
   "id": "cap-35",
   "group": "Developer access",
   "capability": "Trigger provider-specific dynamic tools on a channel (e.g. list Discord channels, Reddit flairs, Instagram Reels audio)",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "GET /public/v1/integrations/{id}/settings; POST /public/v1/integrations/{id}/trigger",
    "mcp": "trigger_integration_tool",
    "cli": "postiz integrations:trigger",
    "ui": "Composer settings panel"
   },
   "check": "Trigger call returns the provider-specific list (e.g. flairs) matching what the settings endpoint advertised as available tools",
   "source": "https://docs.postiz.com/public-api/integrations/settings; https://docs.postiz.com/public-api/integrations/trigger"
  },
  {
   "id": "cap-36",
   "group": "Account",
   "capability": "Receive in-app notifications about organisation activity",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "GET /public/v1/notifications",
    "mcp": null,
    "cli": null,
    "ui": "Notifications bell"
   },
   "check": "GET /public/v1/notifications returns the 100 most recent notifications, newest first",
   "source": "https://docs.postiz.com/public-api/notifications/list"
  }
 ],
 "attempts": [
  {
   "t": "00:30",
   "cap": "docs",
   "capability": "Find docs",
   "task": "Read llms.txt, docs llms.txt, API intro",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "postiz.com/llms.txt and docs.postiz.com/llms.txt (+ llms-full.txt, 512 KB) 200 text/plain; API reference per endpoint as .md",
   "quality": {
    "docs_match": "match"
   }
  },
  {
   "t": "01:30",
   "cap": "signup",
   "capability": "Sign up",
   "task": "Create account with email/password/company",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "Web form at platform.postiz.com/auth. redirected to /auth/activate. No visible CAPTCHA. No documented headless signup route.",
   "notes": "First click before hydration submitted the form as a native GET, putting email+password into the URL query string (platform.postiz.com/auth?email=...&password=...).",
   "quality": {
    "error_legibility": "silent"
   }
  },
  {
   "t": "02:00",
   "cap": "verify",
   "capability": "Verify email",
   "task": "Open activation link from the agent's inbox",
   "route": "browser",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "Mail 'Activate your account' from amarie@postiz.com arrived within ~1 min; link /auth/activate/<JWT> logged us in and landed on /launches?onboarding=true",
   "notes": "Activation JWT embeds the full user row incl. signup IP and user agent."
  },
  {
   "t": "02:30",
   "cap": "first_action",
   "capability": "Use the app after login",
   "task": "Reach the calendar/composer",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "After login the whole UI is replaced by the plan picker: 'Pay $0 Today - Start your free trial!' with embedded Stripe Checkout asking for a card. Only 'Developers' (create OAuth app) is reachable.",
   "notes": "Wall: card required to start the 7-day trial; no free plan."
  },
  {
   "t": "03:00",
   "cap": "credentials",
   "capability": "Get API credentials",
   "task": "Get a token for MCP via documented OAuth with dynamic client registration",
   "route": "mcp",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "mcp.postiz.com/.well-known/oauth-protected-resource/mcp-oauth-dynamic and oauth-authorization-server metadata; POST api.postiz.com/oauth/register (DCR) -> 201 client pcd_...; consent screen platform.postiz.com/oauth/authorize clicked Authorize in browser; POST api.postiz.com/oauth/token (PKCE) -> 200 pos_ token",
   "notes": "DCR + token exchange headless; consent click needed the logged-in browser. API key itself (Settings > Developers) is not shown without a subscription.",
   "quality": {
    "verify_route": "yes",
    "docs_match": "match"
   }
  },
  {
   "t": "03:30",
   "cap": "first_call",
   "capability": "First API/MCP call",
   "task": "MCP initialize + tools/list + integrationList",
   "route": "mcp",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "initialize -> serverInfo 'Postiz MCP' 1.0.0; tools/list -> 19 tools (saved mcp_tools.json); tools/call integrationList -> {\"output\":[]}",
   "notes": "Worked although the org has no subscription; the public API with the same token returns 401 'No subscription found'.",
   "quality": {
    "docs_match": "drift"
   }
  },
  {
   "t": "03:40",
   "cap": "first_call",
   "capability": "First API call",
   "task": "Public API with OAuth token",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "GET https://api.postiz.com/public/v1/integrations and /public/v1/is-connected -> 401 {\"msg\":\"No subscription found\"}",
   "quality": {
    "error_legibility": "clear",
    "recoverable": "no"
   }
  },
  {
   "t": "07:30",
   "cap": "first_call",
   "capability": "First CLI call",
   "task": "postiz integrations:list (npm postiz CLI) with token as POSTIZ_API_KEY",
   "route": "cli",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "❌ Failed to list integrations: Request failed: API Error (401): {\"msg\":\"No subscription found\"}",
   "quality": {
    "error_legibility": "clear"
   }
  },
  {
   "t": "05:00",
   "cap": "pay",
   "capability": "Pay step probe",
   "task": "Probe 402/x402/MPP/L402, well-known, checkout",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "api.postiz.com/public/v1/* unauthenticated -> 401 {\"msg\":\"No API Key found\"} (no 402, no PAYMENT-REQUIRED/WWW-Authenticate Payment); x402./mpp./agents.postiz.com do not resolve; /.well-known/ucp, /auth.md, /SKILL.md 404 HTML; no x402/MPP/L402/ACP/UCP in docs llms-full.txt. Checkout = Stripe embedded checkout in app (cs_live_), card required even for the $0 trial.",
   "notes": "No billing API; plan changes and cancel are in the web Billing page."
  },
  {
   "t": "06:00",
   "cap": "cancel",
   "capability": "Cancel plan",
   "task": "Nothing to cancel (no trial started)",
   "route": "none",
   "documented": true,
   "result": "skipped",
   "verified": false,
   "evidence": "No subscription was started. Docs: cancel on the Billing page in web UI, requires a >=20-char reason, may show a 50% retention offer."
  },
  {
   "t": "06:30",
   "cap": "delete",
   "capability": "Delete account",
   "task": "Find self-serve account deletion",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": true,
   "evidence": "docs llms-full.txt: 'There is no self-serve account deletion or data export in Postiz today. Email support@postiz.com for account closure'. Not emailed (no messages to real people).",
   "quality": {}
  },
  {
   "t": "08:00",
   "cap": "cap-01",
   "capability": "Schedule a post",
   "task": "Schedule a post on the free/no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\"). No channel can be connected (connect endpoint is behind the same 401), so nothing can be posted."
  },
  {
   "t": "08:00",
   "cap": "cap-02",
   "capability": "Publish now",
   "task": "Publish now on the free/no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\"). No channel can be connected (connect endpoint is behind the same 401), so nothing can be posted."
  },
  {
   "t": "08:00",
   "cap": "cap-03",
   "capability": "Per-channel content",
   "task": "Per-channel content on the free/no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\"). No channel can be connected (connect endpoint is behind the same 401), so nothing can be posted."
  },
  {
   "t": "08:00",
   "cap": "cap-04",
   "capability": "Cross-post",
   "task": "Cross-post on the free/no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\"). No channel can be connected (connect endpoint is behind the same 401), so nothing can be posted."
  },
  {
   "t": "08:00",
   "cap": "cap-05",
   "capability": "Threads",
   "task": "Threads on the free/no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\"). No channel can be connected (connect endpoint is behind the same 401), so nothing can be posted."
  },
  {
   "t": "08:00",
   "cap": "cap-06",
   "capability": "Media",
   "task": "Media on the free/no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\"). No channel can be connected (connect endpoint is behind the same 401), so nothing can be posted."
  },
  {
   "t": "08:00",
   "cap": "cap-07",
   "capability": "AI generation",
   "task": "AI generation on the free/no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\"). No channel can be connected (connect endpoint is behind the same 401), so nothing can be posted."
  },
  {
   "t": "08:00",
   "cap": "cap-08",
   "capability": "Repeating posts",
   "task": "Repeating posts on the free/no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\"). No channel can be connected (connect endpoint is behind the same 401), so nothing can be posted."
  },
  {
   "t": "08:00",
   "cap": "cap-09",
   "capability": "Clipping",
   "task": "Clipping on the free/no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\"). No channel can be connected (connect endpoint is behind the same 401), so nothing can be posted."
  },
  {
   "t": "08:00",
   "cap": "cap-10",
   "capability": "Calendar list/reschedule",
   "task": "Calendar list/reschedule on the free/no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\"). GET /public/v1/posts?startDate=2026-10-01T00:00:00Z&endDate=2026-10-31T00:00:00Z -> 401 No subscription found."
  },
  {
   "t": "08:00",
   "cap": "cap-14",
   "capability": "Connect channel",
   "task": "Connect channel on the free/no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\"). Documented connect route GET https://api.postiz.com/public/v1/social/x -> 401 {\"msg\":\"No subscription found\"} (the map's /integrations/connect/{integration} path is 404; OpenAPI says GET /social/{integration}).",
   "quality": {
    "error_legibility": "clear"
   }
  },
  {
   "t": "08:00",
   "cap": "cap-19",
   "capability": "AI agent chat",
   "task": "AI agent chat on the free/no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\"). No channel can be connected (connect endpoint is behind the same 401), so nothing can be posted."
  },
  {
   "t": "08:10",
   "cap": "cap-20",
   "capability": "Drive Postiz via MCP",
   "task": "tools/list then create a post",
   "route": "mcp",
   "documented": true,
   "result": "partial",
   "verified": true,
   "evidence": "tools/list returned 19 tools and integrationList answered (empty) without a subscription; create_post (integrationSchedulePostTool) needs a connected channel, which needs a subscription; not attempted further.",
   "quality": {
    "verify_route": "yes"
   }
  },
  {
   "t": "11:00",
   "cap": "cap-11",
   "capability": "Draft/schedule status",
   "task": "Draft/schedule status on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-12",
   "capability": "Delete post",
   "task": "Delete post on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-13",
   "capability": "Preview link",
   "task": "Preview link on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-15",
   "capability": "Manage channel",
   "task": "Manage channel on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-16",
   "capability": "Time slots",
   "task": "Time slots on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-17",
   "capability": "Customer groups",
   "task": "Customer groups on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-18",
   "capability": "Invite link",
   "task": "Invite link on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-21",
   "capability": "Plugs",
   "task": "Plugs on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-22",
   "capability": "RSS auto-post",
   "task": "RSS auto-post on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-23",
   "capability": "Webhooks",
   "task": "Webhooks on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-25",
   "capability": "Platform analytics",
   "task": "Platform analytics on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-26",
   "capability": "Post analytics",
   "task": "Post analytics on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-27",
   "capability": "Duplicate post",
   "task": "Duplicate post on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-28",
   "capability": "Missing content",
   "task": "Missing content on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-29",
   "capability": "Post settings",
   "task": "Post settings on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-30",
   "capability": "Media library",
   "task": "Media library on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-31",
   "capability": "Sets",
   "task": "Sets on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-32",
   "capability": "Signatures",
   "task": "Signatures on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-33",
   "capability": "Team",
   "task": "Team on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-34",
   "capability": "API key / OAuth app",
   "task": "API key / OAuth app on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "OAuth app creation (Settings > Developers) is visible on the paywall screen; API key not shown without a subscription. Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-35",
   "capability": "Provider tools",
   "task": "Provider tools on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\")."
  },
  {
   "t": "11:00",
   "cap": "cap-36",
   "capability": "Notifications",
   "task": "Notifications on the no-card scope",
   "route": "api",
   "documented": true,
   "result": "plan_gated",
   "verified": true,
   "evidence": "Public API GET /public/v1/integrations with our OAuth token -> 401 {\"msg\":\"No subscription found\"}; docs (cloud overview) \"There is no free plan... an organisation without a subscription cannot use the app\"; the 7-day trial requires a card (docs.postiz.com/cloud/trial \"Starting a trial requires a payment method\"). GET /public/v1/notifications -> 401 No subscription found."
  }
 ],
 "stale": false,
 "icon": "/logos/postiz.png",
 "monitored": false,
 "verdict": "Gets in on its own, L2 · Gets in. Our agent signed up through the web form and confirmed by email, no CAPTCHA shown. It called MCP initialize, listed tools, and read the integration list without a subscription. Sign-up and the first call held up, but the public API and CLI answered \"No subscription found,\" and first_action stopped: there is no free plan, so no channel can be connected and nothing can be created. Paying needs a card for the trial, which our agent does not carry, so it never started a plan or reached checkout.",
 "page": "https://agentdrives.com/tools/postiz?via=api"
}