Open-source, self-hosted posting layer with an MCP server for AI agents. 25+ platforms.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Ask your AI agent which of your posts made money.
That question is answered by seenpaid.com β the hosted cloud product, which matches your Stripe sales back to the exact post that drove them. This repository is not that. This repository is the open posting layer underneath it: a self-hosted service that connects to 25 social and publishing platforms, queues and retries deliveries, and exposes itself to an AI agent over MCP (Model Context Protocol) so an agent can schedule posts on your behalf. Point an agent at your own instance, or point it at seenpaid.com if you also want the revenue answer β same MCP shape, different depth.
If what you actually want is "which post made money," this repo alone
can't answer that β connect your instance's data to seenpaid.com, or read
SELF_HOST.md for the honest tradeoffs before you invest time self-hosting
for that reason.
The API is now listening on http://localhost:3001. Full walkthrough,
including connecting a platform and your agent, in SELF_HOST.md.
Point an MCP-capable agent at POST /mcp (Bearer API_KEY) and it gets:
| Tool | What it does |
|---|---|
list_accounts | Lists connected platform accounts β id, platform, handle, status |
list_posts | Lists recent posts with status, schedule time, and target platforms |
schedule_post | Schedules or immediately publishes a post to one, several, or all connected accounts |
That's the whole surface. There's no get_analytics or get_top_posts
here β those exist only on the hosted seenpaid.com MCP server, because
answering them requires the closed-source attribution engine this repo
doesn't include.
See mcp-connector/README.md for a copy-pasteable client config.
| Platform | Connect method |
|---|---|
| X (Twitter) | Bring-your-own OAuth 1.0a app keys |
| Bluesky | App password |
| OAuth | |
| OAuth (Meta) | |
| OAuth (Meta) | |
| TikTok | OAuth |
| Discord | Webhook URL |
| Telegram | Bot token + channel |
| Mastodon | OAuth |
| Nostr | Private key (nsec/hex) |
| Dev.to | API key |
| Hashnode | Personal access token |
| Medium | Integration token |
| OAuth | |
| Threads | OAuth |
| Tumblr | OAuth |
| OAuth | |
| VK | OAuth |
| Slack | Incoming webhook URL |
| WordPress | Application password |
| Ghost | Admin API key |
| Lemmy | Instance login |
| Generic webhook | URL + optional signing secret |
| Micro.blog | App token |
| Matrix | Homeserver + access token + room |
Each adapter lives in src/platforms/. Only platforms you configure
credentials for are usable β everything else fails cleanly with a clear
error rather than blocking the rest of the app. Full env var list per
platform in SELF_HOST.md.
This is intentionally not the multi-tenant JWT/RBAC system a SaaS
product needs. Self-hosting means you're the only user, so auth here is one
shared secret: set API_KEY in .env, send it as Authorization: Bearer <key> (or X-Api-Key: <key>) on every request. No signup, no login UI, no
sessions, no password hashing. This mirrors how most single-operator
self-hosted tools handle auth β one secret, checked on every request,
nothing more to reason about.
If you need multiple users or role-based access on one instance (e.g. an
agency running this for several clients), that's a deliberate scope cut β
see CONTRIBUTING.md for how to propose it.
The core (everything except mcp-connector/) is licensed
AGPL-3.0 β see LICENSE. The short version: you can self-host, modify,
and redistribute freely, but if you run a modified version as a network
service for others, you must offer them the modified source too. This
exists to keep the project from being cloned into a closed-source competing
service without the changes flowing back.
mcp-connector/ (just client-side config for connecting an agent) is
MIT β see mcp-connector/LICENSE β so it's freely copyable into agent
directories and other tooling without license friction.
See CONTRIBUTING.md before opening a PR β it sets expectations on scope
and response time.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/seenpaid)<a href="https://allmcps.com/mcp/seenpaid"><img src="https://allmcps.com/api/badge/seenpaid?style=directory" alt="Seenpaid on AllMCPs" /></a>