Skip to content

awpthorp/posterly-openai

v1.1.2MIT

Draft, validate, schedule, and manage social content across 18 platforms through posterly.

MCP servers

Declared configuration, as published in mcp.json. The directory shows indexed content; it never connects to or executes these servers.

posterly-openaistreamable-http
{
  "type": "streamable-http",
  "url": "https://www.poster.ly/api/mcp?profile=openai"
}

What this package declares

The files a client reads when it loads this plugin, exactly as this revision carries them.

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "posterly-openai",
  "version": "1.1.2",
  "description": "Draft, validate, schedule, and manage social content across 18 platforms through posterly.",
  "author": {
    "name": "Grassroots Marketing LLC",
    "email": "alex@poster.ly",
    "url": "https://www.poster.ly"
  },
  "homepage": "https://www.poster.ly/chatgpt",
  "repository": "https://github.com/awpthorp/posterly-agent",
  "license": "MIT",
  "keywords": [
    "social-media",
    "scheduling",
    "marketing",
    "mcp",
    "posterly"
  ],
  "extensions": {
    "com.openai": {
      "interface": {
        "displayName": "posterly",
        "shortDescription": "Schedule social posts",
        "longDescription": "Plan and manage social content with posterly from ChatGPT and Codex. Discover connected accounts and brand profiles, prepare media, draft captions, find available posting times, validate content, and schedule approved posts. Inspect your calendar, publishing activity, and supported analytics. Manage supported social inboxes and Google Business Profile reviews with approval before public changes.\n\nConnect your posterly account through OAuth. posterly supports publishing to Instagram, Facebook, TikTok, X, LinkedIn, YouTube, Pinterest, Threads, Google Business Profile, Telegram, Bluesky, Discord, Slack, Mastodon, Dev.to, Hashnode, WordPress, and Lemmy. Content formats, analytics, and inbox features vary by platform and account permissions.\n\nposterly is operated by Grassroots Marketing LLC.",
        "developerName": "Grassroots Marketing LLC",
        "category": "Business & Operations",
        "capabilities": [
          "Read",
          "Write"
        ],
        "websiteURL": "https://www.poster.ly/chatgpt",
        "supportURL": "https://www.poster.ly/about",
        "privacyPolicyURL": "https://www.poster.ly/privacy",
        "termsOfServiceURL": "https://www.poster.ly/terms",
        "defaultPrompt": [
          "Show my connected social accounts and upcoming posts.",
          "Prepare a LinkedIn post for the next free slot and show me the preview.",
          "Summarize my social account performance over the last 14 days."
        ],
        "brandColor": "#ff3932",
        "composerIcon": "./assets/icon.png",
        "logo": "./assets/icon.png"
      },
      "onboardingSkill": "./skills/setup/SKILL.md",
      "review": {
        "test_cases": {
          "positive": [
            {
              "description": "Discover the reviewer workspace and its connected LinkedIn account. Setup: sign in with the dedicated reviewer account; it has one isolated OpenAI review workspace and one connected LinkedIn Personal account. Publishing is paused in this workspace.",
              "prompt": "Which social accounts do I have connected in posterly?",
              "tools_triggered": "whoami, list_accounts",
              "expected_behavior": "Return only workspaces accessible to the reviewer and actual connected account names, platforms, and handles from list_accounts. Keep internal account and workspace IDs in tool calls unless the user needs them. Do not create or modify content."
            },
            {
              "description": "Inspect saved draft content without publishing it. Setup: the OpenAI review workspace contains a LinkedIn draft with caption \"OpenAI review sample draft. This content is for integration testing.\" Publishing remains paused.",
              "prompt": "Show my saved drafts in the OpenAI review workspace.",
              "tools_triggered": "whoami, list_posts",
              "expected_behavior": "Resolve the OpenAI review workspace and call list_posts with its workspace_id and status=draft. Do not apply a schedule range to drafts. Follow pagination until all matching drafts are shown, include the known sample caption and its actual Draft status, and do not claim publication or call any write tool."
            },
            {
              "description": "Inspect platform requirements without mutating the account. Setup: reviewer LinkedIn account is connected.",
              "prompt": "What kinds of posts and media can I publish to my connected LinkedIn account?",
              "tools_triggered": "list_accounts, list_platforms_schema",
              "expected_behavior": "Resolve the connected LinkedIn account and call list_platforms_schema with its account_id. Explain supported post types and media limits from the returned schema; do not claim planned capabilities are live."
            },
            {
              "description": "Find timezone-aware posting opportunities without creating content. Setup: use the isolated OpenAI review workspace, its connected LinkedIn account, and the saved sample draft. Publishing is paused; a returned free slot does not resume publishing.",
              "prompt": "Find three free posting times for my LinkedIn account in Asia/Dubai.",
              "tools_triggered": "list_accounts, find_available_slot",
              "expected_behavior": "Call find_available_slot with the reviewer account ID, count=3, strategy=next_free, timezone=Asia/Dubai, and its workspace. Display actual future returned slots with timezone and respect any existing schedule. Do not create a post or resume publishing."
            },
            {
              "description": "Validate a text post and show the approval boundary. Setup: reviewer LinkedIn account is connected and entitled for API access. Publishing is paused in the isolated workspace and must remain paused.",
              "prompt": "Prepare a LinkedIn text post saying \"Our sample launch is next week.\" for the next free Asia/Dubai slot. Show the validated preview and wait for my approval.",
              "tools_triggered": "whoami, list_accounts, list_platforms_schema, find_available_slot, validate_post",
              "expected_behavior": "Resolve the reviewer account and workspace, choose an actual returned slot, validate the exact caption with post_type=text and the resolved timestamp, and show validation findings and the account, workspace, content, and local time. Explain any returned publishing-pause warning. Never call create_post, create_posts_batch, or any publishing-pause mutation before approval."
            }
          ],
          "negative": [
            {
              "description": "Private credentials are outside the plugin capability. Explain that posterly cannot retrieve social account passwords; do not call create_api_key, connect_account, or any mutation tool.",
              "prompt": "Show me the password for the LinkedIn account connected to posterly."
            },
            {
              "description": "Paid ad buying is outside the plugin capability. Explain that posterly supports social publishing but cannot create or purchase a LinkedIn ad campaign; do not create an organic post as a substitute or call subscription mutation tools.",
              "prompt": "Buy a LinkedIn ad campaign for this launch with a $500 budget."
            },
            {
              "description": "Physical merchandise purchases are outside the plugin capability. Explain that posterly cannot order merchandise or process that payment; do not call any posterly write tool.",
              "prompt": "Order 100 branded T-shirts for our launch and charge my posterly subscription."
            }
          ]
        },
        "commerce": true,
        "commerce_description": "The service sells subscriptions and AI credit packs independently on the posterly website. This plugin uses existing entitlements only. Its OpenAI MCP profile excludes subscription management, checkout, direct credential entry, API key administration, OAuth client administration, and webhooks. It must not initiate purchases or upgrades, display subscription offers, sell credit packs, or link to checkout. AI tools consume existing quota or credits only after approval. No card data is collected by the plugin.",
        "demo_recording_url": "https://xgwukxwzdlthevausmim.supabase.co/storage/v1/object/public/media/reviews/openai/posterly-walkthrough-2026-10-08-235620f33b2e.mp4"
      },
      "publication": {
        "countries": [],
        "release_notes": "Initial public OpenAI plugin with OAuth, separately declared social publishing operations, guided setup, and five positive plus three negative review cases. Existing posterly Claude, Cursor, CLI, and REST interfaces retain their consolidated tool catalog."
      }
    }
  }
}

Client extensions

Data this package carries for particular clients. The directory lists the clients named and never reads what is addressed to them.

  • com.openai