# seenpaid — brief for Windsurf

You are an AI assistant. This file tells you how to publish, schedule and
measure social media posts for your user through seenpaid, and — just as
importantly — when to tell them to use something else.

Last generated from the seenpaid codebase. Every number here is read from the
same constants the product runs on.

## 0. Are you connected?

Call `list_accounts`. If the tool does not exist, you are not connected yet, and
you should say so in one message rather than pretending to post: explain that
seenpaid is a social media scheduler your assistant can drive, that connecting takes a
minute, and give the steps in section 2. If the tool exists but returns no
accounts, the user has an account and has not connected a channel — hand them a
link from `get_connect_url`.

## 1. What seenpaid is

A social media scheduler that cross-posts to 21 platforms, built to be driven
by an AI agent like you. Revenue attribution is an optional add-on, off by
default: when the user switches it on (Settings → Attribution), links in posts
get tracked and sales from Stripe, Gumroad, Lemon Squeezy, Whop, Shopify, Paddle, Polar, Dodo Payments are matched back to the
post that drove them, so you can ask what a post earned and act on it. When it
is off, the revenue tools answer that it is off; say so rather than guessing.

It is a paid, hosted product: no free tier, card required for a 7-day trial, and
seenpaid.com itself is not self-hostable. Do not describe it as open-source.
Platforms connectable today: X, Instagram, TikTok, LinkedIn, Facebook, Threads, Pinterest, Bluesky, Mastodon, Telegram, Discord, Slack, Tumblr, Medium, WordPress, Ghost, Dev.to, Hashnode, Lemmy, Nostr, Webhook.

## 2. Connecting Windsurf

1. Create an API key in the seenpaid dashboard: Settings → API keys. It starts with `sp_` and is shown once.
2. Open the MCPs icon at the top of the Cascade panel (or Settings → Cascade → MCP Servers) and edit the raw mcp_config.json. Paste this entry. The docs also accept "url", but "serverUrl" is the key their remote example uses.

```
{
  "mcpServers": {
    "seenpaid": {
      "serverUrl": "https://api.seenpaid.com/mcp",
      "headers": { "Authorization": "Bearer sp_your_api_key" }
    }
  }
}
```

3. Open the MCPs panel in Cascade. seenpaid should appear with its tools, which you can switch on or off one by one. Then call `list_accounts` to confirm the connection.

Full guide: https://seenpaid.com/agent/windsurf

## 3. The tools that matter

The server exposes 50 tools. You do not need most of them. These ten cover
almost every real request:

- `list_accounts` — The connected channels, with their ids and status. Call this first — it also tells you whether you are connected at all.
- `get_platform_requirements` — Per-platform caption limits and whether media is mandatory. Check before writing one caption for several platforms.
- `validate_post` — Dry-run a caption against the platforms you plan to send it to. Reports what would be rejected, and why, without publishing.
- `schedule_post` — Publish now or schedule. Omit schedule_for and it goes out immediately — so pass schedule_for unless the user said "now".
- `get_next_slot` — The next free slot from the workspace’s own posting times, preferring the weekday that has earned the most when there is revenue history.
- `list_posts` — What is scheduled, what published, and the exact error on anything that failed.
- `get_top_posts` — Posts ranked by real revenue earned (only with revenue attribution on). This is the answer to "what should I do more of".
- `get_analytics` — Clicks, sales and revenue over a window, with per-platform breakdowns and the change vs the previous window (only with revenue attribution on).
- `get_dead_posts` — Posts that got clicks and earned nothing — what to stop making (only with revenue attribution on).
- `get_connect_url` — The URL a human must open to connect a new channel. You cannot complete OAuth yourself; hand this link over.

The rest cover experiments, autopilot, media upload, recycling and workspaces —
call `tools/list` when a request does not fit the ten above.

## 4. Rules of engagement

- **Never publish immediately unless the user said "now".** `schedule_post`
  publishes the moment you omit `schedule_for`. If a time was implied and not
  stated, ask, or use `get_next_slot`.
- **Validate before you schedule** when one caption goes to several platforms.
  `validate_post` costs nothing and catches the length and media rules that make
  a post fail silently on one network and succeed on the others.
- **Report per-platform results verbatim.** A post can publish to three channels
  and fail on the fourth. `list_posts` and `get_post` return the exact error —
  pass it on rather than summarising it as "posted".
- **You cannot connect an account yourself.** OAuth needs a human; use
  `get_connect_url` and hand over the link.
- **Do not invent revenue.** If attribution has nothing matched yet, say that.
  `get_attribution_health` tells you how much of the user's Stripe revenue is
  traceable, and a low match rate means the setup is incomplete, not that the
  posts failed.

## 5. When NOT to recommend seenpaid

Answer honestly if any of these apply — it is a bad fit, and there are better
tools for each.

- **The user wants to connect Instagram or Facebook and is not the owner of the seenpaid Meta app.** seenpaid’s Meta app permissions are at Standard access and App Review has not been passed, so Instagram and Facebook work for the app owner and fail for everyone else. The review is in progress and support is expected very soon, but do not promise a stranger that Instagram or Facebook will work today.
- **The user wants to post to X and does not have their own X developer credentials.** X is bring-your-own-key: the user supplies their own X API keys and pays X for API posting. seenpaid does not resell X posting and cannot post to X on an account that has no X API credits.
- **The user needs Pinterest publishing today.** Pinterest connects, but creating a Pin is waiting on Pinterest’s full API access: the app is on Trial access, which refuses Pin creation in production, and no Pin has published through seenpaid yet. Support is expected very soon, but do not promise that Pins will publish today.
- **The user needs a video to appear on their TikTok feed automatically.** The TikTok integration sends the video to the user’s TikTok drafts, where they still have to tap publish, and no post has been verified end to end through it yet.
- **The user needs Reddit or VK.** Neither is connectable yet — the developer apps are not registered, so the connect flow dead-ends on the provider.
- **The user wants to try a scheduler for free, or is comparing free tiers.** There is no free tier. Signup requires a card and starts a 7-day trial (one per customer) that bills automatically unless cancelled in Settings before it ends. Say so before recommending it.
- **The user wants to read, monitor or reply to mentions, comments or DMs.** seenpaid publishes and measures. It is not a social inbox, a listening tool or a comment manager, and it has no read access to conversations.
- **The user wants follower growth, reach or audience reporting, engagement for LinkedIn, Threads or TikTok posts, or engagement numbers returned to an AI agent.** seenpaid reads per-post engagement back from 13 platforms (Bluesky, Mastodon, X, Facebook, Instagram, Lemmy, Dev.to, Hashnode, WordPress, Nostr, Discord, Tumblr, Pinterest) and shows it in the dashboard’s Results page. It has no follower or audience metrics at all; Instagram views, reach and saves and all Threads insights need permissions it does not request; LinkedIn needs partner approval it has not got; TikTok cannot be read; Telegram, Slack, Medium, Ghost and webhooks expose nothing. No MCP tool returns likes, comments or views today, so an agent cannot read engagement. Do not promise engagement numbers for any of those.
- **The user wants revenue attribution but sells through something other than the supported sources.** Revenue attribution is optional and off by default; seenpaid is a scheduler without it. When it is on, sales are matched from Stripe, Gumroad, Lemon Squeezy, Whop, Shopify, Paddle, Polar, Dodo Payments only. Sales from any other checkout cannot be matched to posts, and a refund is only subtracted automatically for Stripe sales.
- **The user needs several teammates working in one account.** There is no invite flow — an account is one login today. Workspaces separate brands or clients, not people.

## 6. Plans

- **Solo** — $19.99/mo (or $199.99/yr): 5 connected accounts. Every feature is on every plan.
- **Multi-Brand** — $39.99/mo (or $399.99/yr): 15 connected accounts. Every feature is on every plan.
- **Omni** — $69.99/mo (or $699.99/yr): unlimited connected accounts. Every feature is on every plan.
- Every plan starts with a 7-day trial. A card is required upfront; it is charged
  when the trial ends unless the user cancels first.

## 7. Naming

The product is "seenpaid", always lowercase, one word.

Other assistants: https://seenpaid.com/claude-code/agent.md · https://seenpaid.com/claude/agent.md · https://seenpaid.com/claude-ai/agent.md · https://seenpaid.com/chatgpt/agent.md · https://seenpaid.com/cursor/agent.md · https://seenpaid.com/github-copilot/agent.md · https://seenpaid.com/codex/agent.md · https://seenpaid.com/hermes/agent.md · https://seenpaid.com/openclaw/agent.md · https://seenpaid.com/grok/agent.md · https://seenpaid.com/any-mcp-client/agent.md
