{
  "name": "com.postemi/postemi",
  "description": "Schedule, preview, publish and delete social media posts across connected channels (Facebook, Instagram, X, LinkedIn, YouTube, TikTok, Threads, Bluesky, Telegram, Slack, Discord and more), upload media, and read the posting calendar.",
  "version": "1.0.0",
  "title": "Postemi",
  "icons": [
    {
      "src": "https://postemi.com/icons/icon-512.png",
      "mimeType": "image/png",
      "sizes": [
        "512x512"
      ]
    }
  ],
  "websiteUrl": "https://postemi.com",
  "repository": null,
  "remotes": [
    {
      "type": "streamable-http",
      "url": "https://mcp.postemi.com/mcp",
      "authentication": {
        "type": "oauth2",
        "protectedResourceMetadata": "https://mcp.postemi.com/.well-known/oauth-protected-resource",
        "authorizationServerMetadata": "https://mcp.postemi.com/.well-known/oauth-authorization-server",
        "scopesSupported": [
          "mcp:read",
          "mcp:write"
        ]
      }
    }
  ],
  "tools": [
    {
      "name": "get_workspace_context",
      "description": "The exact time in UTC, the user's timezone and the workspace name.",
      "readOnly": true
    },
    {
      "name": "list_workspaces",
      "description": "Lists the user's workspaces and marks the one the connection works on.",
      "readOnly": true
    },
    {
      "name": "switch_workspace",
      "description": "Points the connection at another workspace. Every tool works there afterwards.",
      "readOnly": false
    },
    {
      "name": "list_integrations",
      "description": "The connected channels with id, @handle and state.",
      "readOnly": true
    },
    {
      "name": "list_groups",
      "description": "The customer groups.",
      "readOnly": true
    },
    {
      "name": "get_integration_schema",
      "description": "A channel's rules and the character limit resolved for the account.",
      "readOnly": true
    },
    {
      "name": "get_channel_options",
      "description": "Platform specific choices for a channel.",
      "readOnly": false
    },
    {
      "name": "preview_post",
      "description": "Shows what would go out, per channel. Writes nothing.",
      "readOnly": true
    },
    {
      "name": "list_posts",
      "description": "The calendar, in UTC and local time, with channel names.",
      "readOnly": true
    },
    {
      "name": "delete_post",
      "description": "Deletes one unpublished post (one channel), or the whole group with allChannels: true. Refuses one that is already live.",
      "readOnly": false
    },
    {
      "name": "create_post",
      "description": "Draft, schedule, or publish now.",
      "readOnly": false
    },
    {
      "name": "upload_media_from_url",
      "description": "An image or video into the media library from a URL or a data URL.",
      "readOnly": false
    },
    {
      "name": "create_upload_link",
      "description": "A browser link where the user drops a file from their own computer. Lives for two hours.",
      "readOnly": false
    },
    {
      "name": "list_upload_link_files",
      "description": "What arrived through the upload link, with a URL you can put in a post.",
      "readOnly": true
    },
    {
      "name": "get_plans",
      "description": "The four plans with prices in forints, euros, Swiss francs and US dollars, the limits, the trial rule and the current plan. Only when the user asks.",
      "readOnly": true
    },
    {
      "name": "subscribe",
      "description": "A Stripe Checkout link for the chosen plan. The user opens it and pays with their own wallet. Only on a signed in (OAuth) connection, for the owner.",
      "readOnly": false
    },
    {
      "name": "get_subscription",
      "description": "The subscription state and any unpaid checkout. After payment the agent uses it to confirm the plan is live.",
      "readOnly": true
    },
    {
      "name": "manage_subscription",
      "description": "A link to the Stripe billing portal: plan change, cancellation, invoices, card. Only on an OAuth connection, for the payer.",
      "readOnly": false
    },
    {
      "name": "open_posty",
      "description": "Opens the Postemi app: calendar, composer and channels. It is also in the ChatGPT sidebar.",
      "readOnly": true
    },
    {
      "name": "open_posty_panel",
      "description": "The same app in the side panel of a ChatGPT conversation. Called by the app, not by the model.",
      "readOnly": true
    },
    {
      "name": "read_settings",
      "description": "The user's settings: timezone and the workspace this connection acts on, with the values to choose from.",
      "readOnly": true
    },
    {
      "name": "update_settings",
      "description": "Saves the timezone, or moves the connection to another workspace. The ChatGPT plugin settings call it.",
      "readOnly": false
    },
    {
      "name": "search_mentions",
      "description": "Channels and upcoming posts for the @ menu of the ChatGPT desktop app. Called by the app, not by the model.",
      "readOnly": true
    },
    {
      "name": "get_post",
      "description": "One post in full (thread posts or comments, media, settings) for the editor of the Postemi app. Called by the app, not by the model.",
      "readOnly": true
    },
    {
      "name": "update_post",
      "description": "Changes a scheduled, draft or failed post from the editor of the Postemi app. A published post is refused. Called by the app, not by the model.",
      "readOnly": false
    }
  ],
  "authorizationNote": "One address. A client that sends no credential gets 401 with a WWW-Authenticate header naming the RFC 9728 metadata above, and runs the OAuth 2.1 flow from there. A script sends an MCP key instead, as Authorization: Bearer psty_mcp_... The tools are listed here so that no handshake is needed to see what this server does.",
  "documentation": "https://postemi.com/developers",
  "related": {
    "openapi": "https://api.postemi.com/docs-json",
    "restApi": "https://api.postemi.com/public/v1",
    "status": "https://api.postemi.com/public/v1/status",
    "llms": "https://postemi.com/llms.txt"
  }
}