
PostSider
io.github.lumizonePublished by GitHub account lumizonev1.0.0Updated Oct 24, 2026
Social media calendar for AI agents: read channels, create drafts, request approval.
Overview
Connects an AI assistant to a PostSider social media calendar so it can read channels, draft and schedule posts, and request human approval.
- What you can do
- List channels, groups, media, queue plans, content library and posts, with full post details, activity and missing-field checks
- Read agency and per-customer overviews, post and channel analytics, notifications and publishing state
- Create, update, duplicate and delete posts, and move them between draft and schedule
- Upload media from a URL, base64 bytes, or a local file path (local server only)
- Request approval and check approval status; optionally decide approvals when explicitly enabled
- Run policy dry runs and AI text checks or rewrites, and manage hashtag groups, templates and UTM presets
- When to use it
- Useful when a team runs its social publishing through PostSider and wants an assistant to prepare drafts, fill the calendar, check channel rules and report on performance, while a human still reviews what goes live.
- Requirements
- Runs locally over stdio via the npm package, needing Node.js and npx. Requires an organization API key in POSTSIDER_API_KEY, created under Settings -> API. POSTSIDER_API_URL optionally points at a self-hosted instance and must be HTTPS except on loopback. Network access to the PostSider API is required.
Installation
In SourceWeft
- Open PostSider in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
@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:
Codex 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):
Complete 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:
The 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:
3. Verify with a read-only prompt
Ask your agent, and confirm it answers without changing anything:
Then:
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.
From source
Then point your client at the built entrypoint:
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).
Installation 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.
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
Write
Access scopes (remote server)
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
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
Design
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.
Source: apps/mcp/README.md at commit 50dd2cc
Tools
0Version history
1- v1.0.0LatestSep 25, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts