seenpaid
Allows listing connected accounts, viewing posts, and scheduling new posts on Bluesky.
Allows listing connected accounts, viewing posts, and scheduling new posts on dev.to.
Allows listing connected accounts, viewing posts, and scheduling new posts on Discord via webhook.
Allows listing connected accounts, viewing posts, and scheduling new posts on Facebook.
Allows listing connected accounts, viewing posts, and scheduling new posts on Ghost.
Allows listing connected accounts, viewing posts, and scheduling new posts on Hashnode.
Allows listing connected accounts, viewing posts, and scheduling new posts on Instagram.
Allows listing connected accounts, viewing posts, and scheduling new posts on Lemmy.
Allows listing connected accounts, viewing posts, and scheduling new posts on Mastodon.
Allows listing connected accounts, viewing posts, and scheduling new posts on Matrix.
Allows listing connected accounts, viewing posts, and scheduling new posts on Medium.
Allows listing connected accounts, viewing posts, and scheduling new posts on Micro.blog.
Allows listing connected accounts, viewing posts, and scheduling new posts on Pinterest.
Allows listing connected accounts, viewing posts, and scheduling new posts on Reddit.
Allows listing connected accounts, viewing posts, and scheduling new posts on Slack via incoming webhook.
Allows listing connected accounts, viewing posts, and scheduling new posts on Telegram.
Allows listing connected accounts, viewing posts, and scheduling new posts on Threads.
Allows listing connected accounts, viewing posts, and scheduling new posts on TikTok.
Allows listing connected accounts, viewing posts, and scheduling new posts on Tumblr.
Allows listing connected accounts, viewing posts, and scheduling new posts on WordPress.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@seenpaidSchedule my blog post to all connected accounts for tomorrow at 9am."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
seenpaid
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.
What this is
A BullMQ-backed publish pipeline: schedule a post once, it fans out to every connected platform as an independent, retried job.
25 platform adapters behind one interface — OAuth, webhook, API-key, and paste-your-own-credentials flows, whichever each platform actually uses.
A REST API and a 3-tool MCP server, so both a script and an AI agent can drive it the same way.
Single-operator by design: one API key, no login screen, no multi-tenant concept. Deploy it, set a key, use it.
Related MCP server: postfast-mcp
What this is NOT
No revenue attribution. This repo does not track clicks, match sales, or tell you which post earned anything. That's the hard, hosted part — seenpaid.com — and it's deliberately not in here.
No multi-user accounts, teams, or roles. One instance, one operator. If you need that, you're looking for the cloud product.
No billing, plans, or usage limits. There's nothing to meter — this is software you run, not a subscription.
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.
Quickstart
git clone <this-repo>
cd seenpaid
cp .env.example .env
# fill in API_KEY and TOKEN_ENCRYPTION_KEY (openssl rand -hex 32 for each)
docker compose up -d
docker compose exec api npm run db:migrateThe API is now listening on http://localhost:3001. Full walkthrough,
including connecting a platform and your agent, in SELF_HOST.md.
The 3 MCP tools
Point an MCP-capable agent at POST /mcp (Bearer API_KEY) and it gets:
Tool | What it does |
| Lists connected platform accounts — id, platform, handle, status |
| Lists recent posts with status, schedule time, and target platforms |
| 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.
Supported platforms
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.
Architecture
src/
platforms/ 25 adapters + registry — one publish()/OAuth interface
domain/features/
posts/ Create/list/cancel a post; fans out to per-platform jobs
accounts/ Connect/list/disconnect a platform account
media/ Presigned upload + optional free AI image generation
jobs/ BullMQ queue + worker: the actual publish pipeline
entry-points/
api/ REST API (Express)
mcp/ The 3-tool MCP server
auth/ Single-operator API-key auth (see below)
data-access/ Drizzle ORM schema, repositories, migrationsAuth model
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.
License
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.
Contributing
See CONTRIBUTING.md before opening a PR — it sets expectations on scope
and response time.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI assistants to publish, schedule, and manage social media posts across X (Twitter), Instagram, and Threads through the Sociona API. Supports immediate posting, scheduling, analytics, and account management with natural language commands.Last updated618MIT
- AlicenseAqualityAmaintenanceSchedule and manage social media posts across 10 platforms (Instagram, Facebook, TikTok, X, LinkedIn, YouTube, Threads, Pinterest, Bluesky, Telegram) from any MCP-compatible AI assistant. Supports batch posting, media uploads, analytics, and platform-specific features like Reels, Shorts, and carousels.Last updated114265MIT
- Flicense-qualityCmaintenanceEnables AI agents to create, schedule, and manage social media posts across 10 platforms via a unified API.Last updated
- AlicenseAqualityCmaintenanceLets any AI agent post to TikTok, Instagram, YouTube, X, LinkedIn, Bluesky, Telegram, Mastodon and Discord through a single post_to_social tool. Connect an account once, then publish everywhere.Last updated273MIT
Related MCP Connectors
Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.
Social media MCP: publish, schedule & analyze posts on TikTok, Instagram, YouTube, LinkedIn & X
Schedule and publish social posts to 11 platforms with media, campaigns, analytics and AI captions
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/justinasrolando-cpu/seenpaid'
If you have feedback or need assistance with the MCP directory API, please join our Discord server