PostSider
OfficialThis MCP server lets an agent inspect a PostSider workspace and manage calendar/publishing operations through tools for channels, reports, posts, media, scheduling, approvals, analytics, and a publishing kill switch.
Inspect workspace: list channels and channel groups/customers; get agency and customer reports.
Review calendar and posts: list posts by date/customer; get post details, missing fields, and per-post/channel analytics.
Monitor operations: read notifications and whether publishing is active or paused.
Schedule content: find the next free slot; create multi-channel posts as draft, scheduled, or immediate publish.
Manage posts: change status between draft and schedule; delete a whole multi-channel post group.
Media: import images/videos from a public HTTPS URL.
Approvals: send a draft for human approval and check approval status.
Safety control: pause all publishing organization-wide; resuming is human-only.
Allows AI agents to manage Blogger content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Bluesky content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage dev.to content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Discord content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Dribbble content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Facebook content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Farcaster content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Ghost content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Google Business Profile content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Hashnode content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Instagram content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Lemmy content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Listmonk content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Mastodon content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Medium content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Notion content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Pinterest content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Slack content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Telegram content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Threads content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage TikTok content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Twitch content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage WordPress content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage Write.as content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
Allows AI agents to manage YouTube content through PostSider, including creating drafts, scheduling posts, requesting approvals, uploading media, and reading analytics.
@postsider/mcp
MCP (Model Context Protocol) server that gives AI agents selected access to a
PostSider instance through its public API. Works with Claude Code, Claude
Desktop, Codex, Cursor, and any MCP-compatible client. Talks to cloud
(api.postsider.com) or a self-hosted instance, authenticated with an
organization API key.
PostSider is a shared operational calendar: the agent prepares and schedules work, and a human reviews what actually goes live.
Install
1. Create an API key
In PostSider, open Settings -> API and generate an organization API key.
2. Connect your client
Claude Code:
claude mcp add postsider -e POSTSIDER_API_KEY=your_api_key -- npx -y @postsider/mcpCodex CLI and its IDE extension share MCP configuration. Use one of
these options for a server named postsider.
Hosted MCP with OAuth (no organization key pasted into a config file):
codex mcp add postsider --url https://mcp.postsider.com/mcpComplete the PostSider sign-in and permission flow in your client.
Alternatively, run the local MCP package over stdio with an organization API key stored in your environment or secret manager:
codex mcp add postsider --env POSTSIDER_API_KEY=your_api_key -- npx -y @postsider/mcpThe local organization key has broad access to your workspace. Never commit it to a repository or include it in an agent prompt. For a guided walkthrough and a first safe draft, see https://postsider.com/developers/.
Claude Desktop or any generic MCP client:
{
"mcpServers": {
"postsider": {
"command": "npx",
"args": ["-y", "@postsider/mcp"],
"env": {
"POSTSIDER_API_KEY": "your_api_key"
}
}
}
}3. Verify with a read-only prompt
Ask your agent, and confirm it answers without changing anything:
List my connected PostSider channels. Do not create or modify anything.Then:
Show my PostSider calendar for the next 14 days. Do not create or modify anything.4. Only then prepare a draft
The MCP create-post tool defaults to draft, not schedule or now.
posts:write is a powerful permission: it does not inherently require human
approval for each publication. An agent must not schedule or publish
without explicit authorization for the content, channel and timing. Use
postsider_get_post to verify a write before reporting success.
Create one draft only for the selected channel. Show me the exact content first. Do not publish it.From source
pnpm --filter @postsider/mcp buildThen point your client at the built entrypoint:
{
"mcpServers": {
"postsider": {
"command": "node",
"args": ["/absolute/path/to/apps/mcp/dist/index.js"],
"env": {
"POSTSIDER_API_KEY": "your_api_key",
"POSTSIDER_API_URL": "https://api.postsider.com"
}
}
}
}Claude Code plugin
The package directory is also a Claude Code plugin: .claude-plugin/plugin.json
declares the API key as a secret user setting, .mcp.json starts this server at
the pinned released version, and skills/ contains focused workflows for calendar
review, content publishing, approvals, analytics, and agency operations. The
repository root is a plugin marketplace, so the plugin installs from the
repository directly:
Skill budget is full (5/5). The remote server advertises the skills it bundles through OpenAI's skills extension, which supports at most 5. All five slots are taken, so adding a new skill requires retiring or merging an existing one (
loadSkillCatalogfails closed above 5).
claude plugin marketplace add lumizone/postsider
claude plugin install postsider@postsiderInstallation stores the key outside the plugin: pass it at install time with
--config api_key=your_api_key, or set it afterwards with
/plugin configure postsider@postsider inside Claude Code. The key is never
written into the plugin directory.
Related MCP server: postforme-mcp-pro
What the agent can do
40 tools on the hosted server, 41 on the local stdio server, and 42 on the local
stdio server when you opt in to approval decisions (see Configuration), all
prefixed postsider_.
Read
Tool | Action |
| List connected social channels (ids, names, platforms). Call this first to get channel ids. |
| Org-wide overview: clients, channels, queued, drafts, published, errors, pending approvals. |
| The same report scoped to one customer. |
| List channel groups. |
| Browse the media library (paged, searchable) to reuse files already uploaded. |
| Platform rules, max length and required |
| A channel's recurring posting slots and timezone. |
| Best upcoming times to post on a channel, avoiding booked slots. |
| Saved hashtag groups, caption templates and UTM presets. |
| Next free queue slot for a channel, in UTC. |
| List posts in a date range, filterable by |
| Full post details, including the publish error if any. |
| Who did what to a post and when (verified actor, approvals, publish and retry events), newest first. |
| Per-channel validation problems, so they can be fixed before publishing. |
| Analytics for a single post. |
| Account-level analytics for a channel. |
| Recent notifications: publish failures, channels needing reconnection. |
| Whether publishing is active or paused for the organization. |
| Approval status of a draft, including a reviewer note when rejected. |
Write
Tool | Action | Risk |
| Create a post as a draft, a scheduled post, or an immediate publish across channels. | Creates content and can publish |
| Edit an existing post in place: text, media, date, settings, first comment. Not for published or pending-approval posts. | Changes content, re-arms a scheduled post |
| Move a post between | Reversible |
| Re-queue only the failed destinations of a post group; unknown-outcome rows need explicit confirmation. | Re-publishes failed rows |
| Send a draft into the human approval queue. | Reversible |
| Import media into the library from a public HTTPS URL. | Creates media |
| Upload an image or MP4 you hold as bytes (base64: 25 MB on the local server, 2.5 MB over the remote connection). No public URL needed. | Creates media |
| Local stdio server only. Upload an image or video (jpg, png, gif, webp, avif, bmp, tiff, mp4, mov, webm, mkv; up to 500 MB) from a file path on your own machine. Other file types are refused before being read. | Creates media |
| Local stdio server only, opt-in. Approve or reject the current stage of a pending approval as the API key. Registered only when | Schedules the post on a final approval |
| Get the sign-in link to connect or reconnect a social account (the user approves it on the platform). Needs | Starts a connection |
| Switch a channel on or off. Needs | Reversible |
| Disconnect a channel; unpublished posts become drafts. Needs | Destructive |
| Replace a channel's posting slots ( | Replaces settings |
| Assign a channel to a client by name. Needs | Reversible |
| Create or update a hashtag group, caption template or UTM preset. | Creates content |
| Delete a library item. | Destructive |
| Copy a post as a new draft, optionally onto another channel. | Creates a draft |
| Dry run of the workspace policies for a post you are about to create: | Read only |
| AI check of draft text for up to 3 platforms (uses the monthly AI allowance). | Uses AI quota |
| AI rewrites of a text in a chosen tone (uses the monthly AI allowance). | Uses AI quota |
| Delete a media file from the library and storage. | Destructive |
| Permanently delete a post and every other channel version of it (one group). Read the post first. | Destructive |
| Emergency stop for the whole organization. Resuming is human-only. | Destructive |
Access scopes (remote server)
Scope | Allows |
| Every read tool. |
| Posts, media, library, duplication and AI checks. |
| Connecting, enabling, disabling, re-timing, re-assigning and disconnecting channels. Granted separately so an agent that may only schedule posts cannot reconfigure the workspace. Connections made before this scope existed need to be reconnected to get it. |
Billing, team and roles, API keys, MFA, account deletion and resuming a paused workspace are deliberately not available to agents; they stay in the dashboard.
Every tool declares readOnlyHint, destructiveHint, idempotentHint and
openWorldHint explicitly, so a client can tell a read from a kill switch.
For the exact API endpoint/scope matrix, a no-publication
draft → readback → schedule → status test and the Claude/Codex/Cursor
verification checklist, see
API & MCP trust checklist.
Configuration
Variable | Required | Default | Description |
| yes | - | Organization API key (Settings -> API) |
| no |
| Instance base URL |
| no | unset (off) | Local stdio server only. Exactly |
POSTSIDER_API_URL must be HTTPS. Plain HTTP is accepted only on loopback
(localhost, 127.0.0.1, [::1]) for local development.
For a self-hosted instance, point POSTSIDER_API_URL at where the public API is
served. Behind the bundled nginx the API lives under /api, so use your domain
plus /api, e.g. https://social.example.com/api. The server appends
/public/v1 to whatever you set.
Safety
The API key is read from the environment and sent only to the configured PostSider API URL. It is never printed, logged, or included in an error.
Credentials embedded in
POSTSIDER_API_URLare rejected.Redirects are refused rather than followed: a redirect would move an authenticated request off the configured origin, so the client fails with an actionable message instead.
Requests time out after 30 seconds, and a failing response body is read up to 8 KB before being reported.
Tool arguments are validated locally, before any network call: ids must be non-empty, dates must be real ISO 8601 dates (
2026-02-30is refused, not sent to the API), post statusdraftorschedule, and media imports require a public HTTPS URL.Deciding an approval is opt-in and local only.
postsider_decide_approvalis absent unless you start the local stdio server withPOSTSIDER_MCP_ALLOW_APPROVAL_DECISIONS=true, the hosted server never offers it (OAuth tokens cannot holdapprovals:decide), and the API key itself must carry theapprovals:decidescope. The API refuses a key that requested the approval or created the post, so an agent cannot approve its own work. The tool reads the approval first and ties itsIdempotency-Keyand anexpectStagevalue to the current stage and request time, so a retry of the same decision is harmless and a stale call cannot decide a later stage (it gets a 409).A missing API key exits 1 with an explanatory message on stderr. stdout carries protocol frames only.
Development
pnpm --filter @postsider/mcp typecheck
pnpm --filter @postsider/mcp typecheck:tests
pnpm --filter @postsider/mcp test
pnpm --filter @postsider/mcp build
pnpm --filter @postsider/mcp version:gate
pnpm --filter @postsider/mcp validate:registry
pnpm --filter @postsider/mcp smoke:tarball
claude plugin validate --strict apps/mcpDesign
This server is a thin wrapper over selected /public/v1 REST API endpoints,
authenticated with the raw API key. It has no dependency on the backend and
pulls in only @modelcontextprotocol/sdk and zod, so it stays lean and easy to
maintain. All tool registrations live in a single factory, so the stdio
transport today and any future transport share one agent-facing surface.
Available Tools
19 toolspostsider_create_postCreate / schedule / publish a postA
Create a post across one or more channels. type: "schedule" books it for date; "now" publishes immediately; "draft" saves without publishing. Get channel ids from postsider_list_channels and a free slot from postsider_find_slot. Attach media via postsider_upload_media_from_url first, then pass the returned media objects as images.
Inputs: date (required), posts (required), tags, type, +2 more.
postsider_delete_postDelete a postADestructiveIdempotent
Permanently delete a post and every other channel version of it. The id may be any post in a group: PostSider stores a multi-channel post as one group, and a single id deletes the whole group. Read the post first (postsider_get_post) and confirm the full set of channel versions with the user before calling this.
Inputs: postId (required).
postsider_find_slotFind next free time slotARead-onlyIdempotent
Return the next free scheduling date-time (UTC) for a channel, based on its configured posting queue. Use the returned value as the date for postsider_create_post when scheduling into the queue.
Inputs: channelId (required).
postsider_get_agency_overviewGet agency overviewARead-onlyIdempotent
Get an organization-wide operational overview for an agency: clients, channels, queued posts, drafts, published posts, errors, recent errors and pending approvals. Useful for morning checks and client reporting.
Inputs: days.
postsider_get_approval_statusGet a post's approval statusARead-onlyIdempotent
Check whether a post submitted via postsider_request_approval has been approved, rejected (with the reviewer's note, if any), or is still pending. Returns status "NONE" if the post was never sent for approval.
Inputs: postId (required).
postsider_get_channel_analyticsGet channel analyticsARead-onlyIdempotent
Get account-level analytics for a connected channel (where the provider supports it).
Inputs: channelId (required), date.
postsider_get_customer_reportGet customer reportARead-onlyIdempotent
Get a customer-scoped agency report with channels, queued, draft, published, error and pending approval counts.
Inputs: customerId (required), days.
postsider_get_notificationsGet notificationsARead-onlyIdempotent
List recent notifications for the organization (e.g. publish failures, channels needing reconnection).
Inputs: no named parameters.
postsider_get_postGet post detailsARead-onlyIdempotent
Get the full organization-scoped post group, including current state, scheduled time, media, channel and publish error. Use this to inspect the result of an asynchronous create or publish operation.
Inputs: postId (required).
postsider_get_post_analyticsGet post analyticsARead-onlyIdempotent
Get performance analytics for a single post over the last N days (where the provider supports it).
Inputs: postId (required), days.
postsider_get_post_missing_fieldsCheck post for missing fieldsARead-onlyIdempotent
Return per-channel validation problems / missing required fields for a post, so they can be fixed before publishing.
Inputs: postId (required).
postsider_get_publishing_stateGet publishing stateARead-onlyIdempotent
Check whether publishing is active or paused for this organization. Useful before scheduling (a paused org rejects new posts with publishing_paused), and to confirm a kill switch is on.
Inputs: no named parameters.
postsider_list_channelsList channelsARead-onlyIdempotent
List the social channels (integrations) connected to this PostSider organization. Returns each channel id, name and platform. Call this first to get the channel ids needed by postsider_create_post.
Inputs: no named parameters.
postsider_list_groupsList channel groupsARead-onlyIdempotent
List configured channel groups. In PostSider a group is a customer, so an id returned here is the customerId expected by postsider_get_customer_report and by the customer filter of postsider_list_posts.
Inputs: no named parameters.
postsider_list_postsList postsARead-onlyIdempotent
List posts scheduled or published within a date range (UTC). Useful for reviewing the content calendar before scheduling more.
Inputs: endDate (required), startDate (required), customer.
postsider_pause_publishingPause all publishingADestructiveIdempotent
Immediately halt ALL publishing for this organization (kill switch): no now or schedule posts can be created, and queued posts are parked to HELD instead of going out. Use when something is wrong, for example a PR crisis, a post on the wrong channel, or a runaway automation loop. Resume is human-only (owner, dashboard); this cannot be undone via the API.
Inputs: reason.
postsider_request_approvalSend a draft for approvalAIdempotent
Push a draft post into the human approval queue for review, instead of publishing or scheduling it directly. The post must already exist as a draft (see postsider_create_post with type "draft"). Approval is optional in PostSider, and most posts can also be scheduled directly without ever going through this.
Inputs: postId (required).
postsider_update_post_statusUpdate post statusBIdempotent
Change the status of an existing post (e.g. move between draft and queue).
Inputs: postId (required), status (required).
postsider_upload_media_from_urlUpload media from URLA
Download an image or video from a public URL and store it in the PostSider media library. Returns a media object; pass it (or its array) as images to postsider_create_post.
Inputs: url (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 19 tools
Most tools target a clearly distinct resource+action (channels, groups, posts, analytics, approvals, publishing state). The only real overlap is postsider_get_customer_report vs postsider_get_agency_overview, which both return operational rollups and differ mainly in scope (customer vs organization). The per-channel/per-post analytics and post/get_post/missing_fields tools are adequately distinguished by their descriptions.
Every tool uses the same postsider_ prefix plus a consistent snake_case verb_noun pattern (list_channels, get_post, create_post, delete_post, get_agency_overview). Verbs are used predictably and no conventions are mixed. This makes the surface easy to scan and predict.
19 tools is on the heavier side of the ideal 3-15 range, but the domain (channels, groups, posts, scheduling, analytics, approvals, publishing controls, media) is broad enough to justify most of them. A few reporting/analytics tools could plausibly be consolidated, so it is slightly over-scoped rather than bloated.
The post lifecycle is well covered: discover channels/slots, create (schedule/now/draft), inspect, validate missing fields, update status, submit/check approval, and delete. Gaps are minor: no way to edit post content (only status), no media-library management beyond upload, and no channel connect/disconnect (resume publishing is intentionally human-only).
Maintenance
Related MCP Connectors
Official TimeToPost MCP server for social post drafting, scheduling, publishing and approval queues.
PostHero MCP server — schedule and publish social media posts from any MCP-compatible AI tool
Publish and schedule content across supported platforms, with publishing state and per-platform adaptation. Built by AutomateLab. Product and documentation: https://automatelab.tech/products/mcp/content-distribution-mcp/
Agent-first social media publishing, scheduling, analytics, and unified inbox API + 16-tool MCP server across 18 social platforms (X, LinkedIn, Instagram, YouTube, TikTok, Threads, Bluesky, Reddit, Telegram, Discord, Mastodon, Facebook, Pinterest).
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for Publer social media management API, enabling AI assistants to schedule posts, upload media, pull analytics, and manage accounts across 15+ social networks.1537 npm22MIT
- AlicenseAqualityCmaintenanceMCP server for the Post for Me API, enabling publishing, scheduling, editing, deleting, and analyzing social media posts across 9 platforms from any MCP client.27223 npm1MIT
- AlicenseAqualityCmaintenanceMCP server to manage social media accounts from AI assistants, enabling post creation, scheduling, publishing, and media uploads across multiple platforms.1311 npm1MIT
- AlicenseNot gradedqualityFmaintenanceMCP server for managing social media posts across multiple platforms using the Postiz API. Supports creating, updating, deleting posts, and generating videos.38 npm3MIT