com.seenpaid/seenpaid

السجل الرسمي المالية والمدفوعات

Agentic social media scheduler: 21 platforms, 50 MCP tools, and which posts made money via Stripe.

التثبيت

أضف هذا إلى إعدادات MCP في عميلك (Claude Desktop: claude_desktop_config.json، وCursor: ‏.cursor/mcp.json، ويستخدم VS Code وغيره الصيغة نفسها «mcpServers»).

Remote (streamable-http)
Claude Code
claude mcp add --transport http seenpaid 'https://api.seenpaid.com/mcp'
إعداد JSON (Claude Desktop وCursor وVS Code)
{
    "mcpServers": {
        "seenpaid": {
            "type": "http",
            "url": "https://api.seenpaid.com/mcp"
        }
    }
}

التوثيق

مأخوذ من ملف README للمشروع على GitHub ويُحدَّث أسبوعيًا. تفتح الروابط على GitHub.

المحتويات
  1. seenpaid
  2. What this is
  3. What this is NOT
  4. Quickstart
  5. The 16 MCP tools
  6. Supported platforms
  7. Architecture
  8. Auth model
  9. License
  10. Contributing

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 ships 25 platform adapters, 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. (The hosted product, seenpaid.com, advertises 21: the ones a customer can connect there without registering their own developer app. Self-hosting you bring your own credentials, so you get all 25. Two different numbers, both honest — don't quote one as the other.)
  • A REST API and a 16-tool MCP server — scheduling, editing, media, and account health — 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.

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:migrate

The API is now listening on http://localhost:3001. Full walkthrough, including connecting a platform and your agent, in SELF_HOST.md.

The 16 MCP tools

Point an MCP-capable agent at POST /mcp (Bearer API_KEY) and it gets:

ToolWhat it does
list_accountsConnected accounts — platform, handle, id, status
list_postsPosts with status, schedule time, targets and publish errors
get_postOne post in full
schedule_postSchedule or publish now, to one platform, several, or all
bulk_scheduleA week of posts in one call; one failure doesn't stop the rest
update_postEdit a draft or scheduled post's caption or time
cancel_postCancel before it goes out; already-published targets untouched
delete_postPermanent delete — prefer cancel_post
list_mediaThe media library, newest first
add_media_from_urlPull an image or video in from a public URL
generate_imageText prompt to image, keyless, stored in the library
get_account_healthWhich accounts still work — check before a big batch
get_connect_urlThe link a human opens to connect an account (OAuth needs a human)
disconnect_accountDisconnect an account
get_platform_requirementsCaption limits, whether media is mandatory, per-platform catches
validate_postDry-run a caption against platforms without publishing

That's the whole surface. There's no get_analytics, get_top_posts or anything revenue-shaped 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

PlatformConnect method
X (Twitter)Bring-your-own OAuth 1.0a app keys
BlueskyApp password
LinkedInOAuth
InstagramOAuth (Meta)
FacebookOAuth (Meta)
TikTokOAuth
DiscordWebhook URL
TelegramBot token + channel
MastodonOAuth
NostrPrivate key (nsec/hex)
Dev.toAPI key
HashnodePersonal access token
MediumIntegration token
RedditOAuth
ThreadsOAuth
TumblrOAuth
PinterestOAuth
VKOAuth
SlackIncoming webhook URL
WordPressApplication password
GhostAdmin API key
LemmyInstance login
Generic webhookURL + optional signing secret
Micro.blogApp token
MatrixHomeserver + 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, URL ingestion, optional free AI image generation
  jobs/              BullMQ queue + worker: the actual publish pipeline
  entry-points/
    api/             REST API (Express)
    mcp/             The 16-tool MCP server
  auth/              Single-operator API-key auth (see below)
  data-access/       Drizzle ORM schema, repositories, migrations

Auth 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.

الأسئلة الشائعة

ما هو com.seenpaid/seenpaid؟

Agentic social media scheduler: 21 platforms, 50 MCP tools, and which posts made money via Stripe.

كيف أثبّت com.seenpaid/seenpaid؟

يعمل كخادم بعيد. في Claude Code: claude mcp add --transport http seenpaid 'https://api.seenpaid.com/mcp'. وفي العملاء الآخرين، الصق إعداد JSON من هذه الصفحة في إعدادات MCP الخاصة بهم.

هل يحتاج com.seenpaid/seenpaid إلى مفتاح API؟

لا يذكر إدراجه في السجل أي مفتاح أو سر إلزامي. قد تتطلب بعض الميزات حسابًا لدى الخدمة التي يتصل بها.

هل com.seenpaid/seenpaid مفتوح المصدر؟

نعم. شيفرته متاحة على GitHub بترخيص AGPL-3.0.

من يصون com.seenpaid/seenpaid؟

ينشره justinasrolando-cpu. يدرجه AI.tn لكنه لا يصونه ولا يوصي به.

من سجل MCP الرسمي. الإدراج ليس توصية: راجع شيفرة الخادم وصلاحياته قبل منحه الوصول إلى بياناتك.