// hosted · streamable http · 50 tools
The social media MCP server that knows what made money
Connect Claude, Cursor, ChatGPT or any MCP client to seenpaid and your agent can schedule across 23 platforms — then read back exactly which posts earned revenue, matched through your own Stripe. Hosted, so there is nothing to run.
Endpoint
URL https://api.seenpaid.com/mcp
Transport streamable HTTP
Auth Authorization: Bearer sp_… (or OAuth 2.1)
Tools 50Create a key in Settings. Each key is scoped to a single workspace.
Connect your client
Claude Code
One command, from any project directory.
claude mcp add --transport http seenpaid https://api.seenpaid.com/mcp \
--header "Authorization: Bearer sp_your_api_key"Claude Desktop
Settings → Developer → Edit Config, then restart Claude.
{
"mcpServers": {
"seenpaid": {
"type": "http",
"url": "https://api.seenpaid.com/mcp",
"headers": { "Authorization": "Bearer sp_your_api_key" }
}
}
}Cursor
Add to ~/.cursor/mcp.json, or .cursor/mcp.json in a project.
{
"mcpServers": {
"seenpaid": {
"url": "https://api.seenpaid.com/mcp",
"headers": { "Authorization": "Bearer sp_your_api_key" }
}
}
}ChatGPT & other clients
Any client that speaks streamable HTTP MCP. OAuth is supported where the client prefers it to a static key.
URL https://api.seenpaid.com/mcp
Auth Authorization: Bearer sp_your_api_key
(or OAuth 2.1, if your client supports it)All 50 tools
Every tool your agent gets the moment it connects. Names and descriptions are the ones the server actually registers.
Workspace & accounts (5)
What the agent can see about your connected channels before it posts anything.
- generate_image
- Generate an image from a text prompt and store it in this account's media library. Returns a media id you can pass to schedule_post — the fastest way to go from an idea to a post…
- get_account_health
- Which connected accounts are healthy and which stopped working. An account that needs reconnecting will silently fail to publish, so check this when a post didn't go out or before…
- get_plan_limits
- This account's plan and its caps — how many social accounts and Stripe accounts it can connect, and how many are already used. Check before connecting or scheduling at scale.
- list_accounts
- The connected social accounts — platform, handle, id and status. Use these ids or platforms when scheduling.
- list_notifications
- This account's alerts — sales that landed, publish failures, milestones. Use to catch problems the user hasn't seen yet.
Posting & scheduling (7)
Create, edit, schedule and cancel posts across every connected channel.
- bulk_schedule
- Schedule many posts in one call — a content calendar, a thread split across days, a week of promos. Each item is scheduled independently; if one fails the rest still go through…
- cancel_post
- Cancel a scheduled post before it goes out. Stops every pending platform job; platforms it already published to are untouched. Reversible in the sense that the post row survives —…
- delete_post
- Permanently delete a post and cancel any pending publishes. This cannot be undone — prefer cancel_post unless the user explicitly asked to delete.
- get_post
- Get one post in full, including per-platform publish results — which platforms succeeded, the live URL of each published copy, and the exact error for any that failed.
- list_posts
- List posts with status, schedule time, target platforms and any publish errors. Filter by status to answer questions like "what is scheduled this week" or "did anything fail". Use…
- schedule_post
- Schedule or immediately publish a post. Give a caption plus either platforms or account_ids; omit both to post to every active account. Omit schedule_for to publish now. Use…
- update_post
- Edit a draft or scheduled post — change its caption, its time, or both. Published posts cannot be edited (the platforms already have them).
Revenue attribution (9)
The half no other MCP server has: what each post actually earned, read from your Stripe.
- forecast_post
- Predict what a draft would earn, based on this account's own history — returns a low/high range and the factors driving it. Use BEFORE scheduling to compare two versions of a…
- get_analytics
- The account's revenue attribution over a window — clicks, sales, revenue — with per-platform, per-country and per-device breakdowns, plus the change vs the previous equal-length…
- get_analytics_breakdown
- Slice attribution by one dimension — where the traffic and money actually came from. Use this to answer "which referrer converts best" or "which UTM campaign earned the most".
- get_attribution_health
- How much of this account's real Stripe revenue seenpaid can trace back to a post. A low match rate means the tracking setup is incomplete, not that the posts failed — check this…
- get_dead_posts
- Posts that got clicks but earned nothing — the content that looks like it worked and didn't. The single most actionable list in seenpaid: it tells you what to stop making.
- get_money_dna
- The patterns behind this account's earning posts — best platform, best caption length, whether links help, best posting time. Derived from posts that actually earned, so it needs…
- get_money_feed
- The live activity stream — recent clicks, sales and refunds newest-first, each with the platform and country it came from. Use to answer "what just happened" or "did that post…
- get_post_revenue
- Revenue, clicks and sales for one specific post.
- get_top_posts
- Posts ranked by revenue earned. Answers "which post made the most money" and "what should I do more of".
Growth & optimisation (11)
Timing, recycling, experiments and which channel is worth the effort.
- add_media_from_url
- Pull an image or video from a public URL into this account's media library and get back a media id for schedule_post.
- create_media_upload
- Step 1 of 2 for uploading a file you already have (rather than one at a public URL — for that use add_media_from_url). Returns a URL to HTTP PUT the bytes to, then call…
- create_tracked_link
- Mint a tracked short link for a post. Clicks on it are attributed to that post, and any Stripe sale that follows is traced back to it. Use this when publishing somewhere seenpaid…
- disconnect_account
- Disconnect a social account. Scheduled posts targeting only that account will stop publishing, so check list_posts first.
- finish_media_upload
- Step 2 of 2 after create_media_upload: confirms the bytes arrived and returns a media id for schedule_post. Verifies the file against storage rather than trusting what you report,…
- generate_carousel
- Render 2-10 branded carousel slides (1080×1080 PNGs — dark brand background, title slide + numbered content slides) from text YOU write, and get back ordered media ids for…
- get_channel_roi
- Rank connected platforms by what they actually return — revenue, revenue per click, and revenue per post. Answers 'where should I spend my effort' with money instead of follower…
- get_connect_url
- Get the URL a human needs to open to connect a new social account. The agent can't complete OAuth itself — hand this link to the user.
- get_next_slot
- Suggest when to schedule the next post. Picks the soonest time on the weekday that has actually earned this account the most money, skipping slots already taken by scheduled…
- repost
- Re-publish a post that already worked, as a brand-new post with fresh tracking. The classic use: call get_top_posts, then repost the top earner. Optionally override the caption or…
- summarize_performance
- A single briefing an agent can read aloud: what went out, what earned, what died, what's broken and what to do next. Use this for 'how are we doing' rather than calling five tools…
Platform rules & media (5)
Per-platform limits and the media library, so the agent never ships a post a network will reject.
- get_analytics_timeseries
- Day-by-day clicks, sales and revenue across a window, plus the change from the previous day. Use for trend questions — "is this growing", "which day spiked" — rather than a single…
- get_platform_requirements
- What each platform will and won't accept: caption character limit, whether media is mandatory, whether links in the post body can be tracked, and any platform-specific catch.…
- list_media
- The account's media library, newest first — images and videos already uploaded or generated. Returns ids you can pass straight to schedule_post instead of regenerating something…
- list_workspaces
- The workspaces (brands or clients) this account belongs to. Each has its own posts, channels and revenue — an API key is scoped to exactly one, so this is how an agent knows which…
- validate_post
- Dry-run a caption against the platforms you plan to send it to, WITHOUT publishing. Reports per platform whether it would publish, and exactly why not — too long by N characters,…
Autopilot & suggestions (13)
Let seenpaid draft for you, then approve or dismiss from the agent.
- approve_suggestion
- Approve an autopilot draft. Returns its caption and intended platform so you can then schedule it with schedule_post — approving does NOT publish on its own.
- configure_autopilot
- Turn autopilot on/off and set its cadence, batch size, target platforms and topic. Autopilot drafts posts for you on a schedule; nothing publishes without approval.
- configure_recycle
- Set the auto-recycle rule: re-post anything that earned at least min_revenue, no more often than every cadence_days. Turns proven winners into a repeating stream instead of…
- create_experiment
- Create a caption A/B test: give one idea and a platform, and seenpaid writes N variants. Nothing goes live until launch_experiment. The winner is decided on revenue earned, not…
- dismiss_suggestion
- Reject an autopilot draft so it stops appearing in the queue.
- generate_suggestions
- Run autopilot immediately instead of waiting for its next scheduled batch. Returns how many drafts were created.
- get_autopilot_status
- Whether autopilot is on, how often it generates drafts, which platforms it targets, and how many suggestions are waiting for approval.
- get_experiment
- One A/B test in full — every variant with its clicks, sales and revenue.
- get_experiment_winner
- The winning caption of a finished A/B test, ready to reuse or scale up.
- get_recycle_status
- The rule for automatically re-posting content that already earned money, and which posts currently qualify.
- launch_experiment
- Publish every variant of an A/B test. Each goes out as a real post with its own tracked link, so revenue can be attributed per variant.
- list_experiments
- All caption A/B tests with their variants, status and which variant is winning on revenue.
- list_suggestions
- The autopilot-generated drafts waiting for a decision. Each has an id to pass to approve_suggestion or dismiss_suggestion.
23 platforms, one set of tools
Setup per client
Copy-paste instructions for the clients people ask about most.
Questions
What is a social media MCP server?
MCP (Model Context Protocol) is the open standard AI clients use to call external tools. A social media MCP server exposes posting and analytics as tools an agent can call, so you can say "schedule this to LinkedIn and Instagram for Tuesday 9am" in Claude or Cursor and it happens — no browser, no dashboard, no copy-paste.
Which AI clients can post to social media with seenpaid?
Any MCP client. Claude Code, Claude Desktop, Cursor, ChatGPT, Codex, Hermes and OpenClaw are all confirmed working. seenpaid is a hosted HTTP server, so there is nothing to install or self-host.
Which platforms can an AI agent post to through seenpaid?
All 23: X, Instagram, TikTok, LinkedIn, Facebook, Threads, Pinterest, Reddit, Bluesky, Mastodon, Telegram, Discord, Slack, Tumblr, VK, Medium, WordPress, Ghost, Dev.to, Hashnode, Lemmy, Nostr, Webhook. The same tools cover every one — your agent does not need per-platform code.
How is this different from other social media MCP servers?
Other servers stop at publishing: the agent can post, and then it is blind. seenpaid tracks the links in each post, watches your Stripe, and matches payments back to the exact post that drove them — so the agent can read revenue per post and decide what to do more of. That is what get_post_revenue and get_channel_roi return.
Is the seenpaid MCP server free?
It is included on every plan, including the 7-day free trial. There is no separate charge or per-call fee for MCP access.
How do I authenticate?
Create an API key in Settings — it starts with sp_ — and send it as an Authorization: Bearer header. Clients that prefer OAuth 2.1 can use that instead. Keys are scoped to one workspace.
Give your agent 50 tools and a revenue number
Free for 7 days. Connect Stripe read-only and every post gets a dollar figure attached to it — the thing your agent cannot get anywhere else.
Start your 7-day trial →