{"name":"io.github.lumizone/postsider","slug":"lumizone-postsider","title":"PostSider","description":"Social media calendar for AI agents: read channels, create drafts, request approval.","url":"https://mcp.market/server/lumizone-postsider","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"productivity","tags":["productivity"],"presence":{"score":25,"stars":5,"forks":1,"downloads_week":null,"last_push_at":"2026-09-25T19:55:09.000Z","license":"AGPL-3.0"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/lumizone/postsider","website":"https://postsider.com","version":"1.0.0","remotes":[],"packages":[{"registryType":"npm","identifier":"@postsider/mcp","version":"1.0.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Organization API key from PostSider under Settings -> API.","isRequired":true,"isSecret":true,"name":"POSTSIDER_API_KEY"},{"description":"Instance base URL. Defaults to https://api.postsider.com and must be HTTPS for non-local hosts.","name":"POSTSIDER_API_URL"}]}],"tools":[{"name":"postsider_create_post","description":"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`.","write_action":true,"price_micros":0,"input_schema":null},{"name":"postsider_delete_post","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"postsider_find_slot","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"postsider_get_agency_overview","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"postsider_get_approval_status","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"postsider_get_channel_analytics","description":"Get account-level analytics for a connected channel (where the provider supports it).","write_action":false,"price_micros":0,"input_schema":null},{"name":"postsider_get_customer_report","description":"Get a customer-scoped agency report with channels, queued, draft, published, error and pending approval counts.","write_action":false,"price_micros":0,"input_schema":null},{"name":"postsider_get_notifications","description":"List recent notifications for the organization (e.g. publish failures, channels needing reconnection).","write_action":false,"price_micros":0,"input_schema":null},{"name":"postsider_get_post","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"postsider_get_post_analytics","description":"Get performance analytics for a single post over the last N days (where the provider supports it).","write_action":true,"price_micros":0,"input_schema":null},{"name":"postsider_get_post_missing_fields","description":"Return per-channel validation problems / missing required fields for a post, so they can be fixed before publishing.","write_action":true,"price_micros":0,"input_schema":null},{"name":"postsider_get_publishing_state","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"postsider_list_channels","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"postsider_list_groups","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"postsider_list_posts","description":"List posts scheduled or published within a date range (UTC). Useful for reviewing the content calendar before scheduling more.","write_action":false,"price_micros":0,"input_schema":null},{"name":"postsider_pause_publishing","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"postsider_request_approval","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"postsider_update_post_status","description":"Change the status of an existing post (e.g. move between draft and queue).","write_action":true,"price_micros":0,"input_schema":null},{"name":"postsider_upload_media_from_url","description":"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.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-25T21:42:06.154Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-25T21:42:06.033Z","components":{"code":{"score":25,"max":25,"notes":["8 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@postsider/mcp","version":"1.0.0","found":true,"license":"AGPL-3.0","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-09-25T17:16:02.991Z","repositoryUrl":"git+https://github.com/lumizone/postsider.git"}],"repo":{"found":true,"owner":"lumizone","repo":"postsider","archived":false,"pushedAt":"2026-09-25T19:55:09Z","stars":5,"forks":1,"openIssues":9,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/186499956?v=4","ownerCreatedAt":"2024-10-27T17:19:10Z","license":"AGPL-3.0"},"icon":{"url":"https://avatars.githubusercontent.com/u/186499956?v=4&s=128","source":"github"},"presence":{"stars":5,"forks":1,"downloadsWeek":null,"license":"AGPL-3.0","lastPushAt":"2026-09-25T19:55:09.000Z","score":25}}}},"grade_history":[],"reviews":[]}