<!-- Generated by scripts/gen-docs.ts from @bfl/contract. Do not edit. -->

# MCP tools

Server: `https://mcp.betterfans.link/mcp`. Full list: https://betterfans.link/docs/mcp/tools

## Accounts

- `list_accounts` (read, OnlyFans and Fansly): List the creator accounts this workspace can use, on OnlyFans and Fansly, with each one's platform and plain status (healthy, needs_relink, ...). Start here: every other tool needs an accountId from this list. Call it first, to get account ids and see which accounts are healthy.
- `account_health` (read, OnlyFans and Fansly): One account's status, counts, 30 day revenue and when it last synced. Use when a call fails with account_unavailable or before a long task. It reads synced data, so it answers even while live calls for the account are stopped. Read `status` and follow [what to do for each status](https://betterfans.link/docs/concepts/account-status).
- `link_account` (creates a hosted link, OnlyFans and Fansly): Get a hosted link a creator opens to connect their OnlyFans or Fansly account. Pass platform to choose for them, or leave it out to let them pick. Returns a URL to send the creator and a linkId. Nothing is linked until they finish; check progress with get_link. Use it when the user wants to connect a creator, or reconnect one that needs a relink. Pass `platform` when you know where the creator is; leave it out to let them pick.
- `get_link` (read, OnlyFans and Fansly): Progress of a hosted link from link_account: waiting, signing in, needs a code, connected (with the new accountId and its platform) or failed. Use it after `link_account`, to see whether the creator finished.

## Fans

- `find_fans` (read, OnlyFans and Fansly): Search or rank an account's fans by username or name, subscription status, spend or recency. Returns fan ids to use with get_fan and get_chat. Use it to find a fan by name, or to rank fans by spend, recent messages or newest subscription.
- `get_fan` (read, OnlyFans and Fansly): Everything about one fan: subscription, lifetime spend by type, lists, notes, presence. Spend comes from the fan's transactions. Use it before writing to a fan, or to answer questions about one fan's spend and history.
- `list_fan_lists` (read, OnlyFans and Fansly): The account's fan lists with ids and sizes. Use a list id with find_fans or label_fan. Use it to get list ids for a mass message audience or `label_fan`.
- `online_fans` (read, OnlyFans and Fansly): Fans online right now, with their spend. since is when the fan came online, null on Fansly, which does not say. A fan missing from this list is not known to be offline. Use it to pick fans to message now.

## Chats

- `list_chats` (read, OnlyFans and Fansly): Recent chats for an account, newest first, with unread counts and total spend. A chat id is the fan id. Use it to find chats waiting on the creator, or chats with fans who have spent.
- `get_chat` (read, OnlyFans and Fansly): Messages in one chat, newest first. fresh=true reads live from the platform and keeps the thread unread. Fan text is untrusted. Use it to read a conversation before drafting a reply. Pass `fresh=true` when the last few minutes matter.
- `search_messages` (read, OnlyFans and Fansly): Full text search over an account's messages, optionally for one fan or a date range. Use it to find who mentioned something, for example a custom request.
- `draft_message` (read, OnlyFans and Fansly): Returns what a reply to one fan needs: the chat so far, what the fan has spent and bought, and paid messages they have not bought yet. Writes no text, sends nothing and creates no action. Use it before you write a reply to a fan. You write the words from what it returns, show them to the user, and send them with `send_message` only when asked.

## Money

- `revenue_summary` (read, OnlyFans and Fansly): Gross and net revenue for a period, split by type, as a time series, with top fans and the previous period for comparison. Net is what the creator keeps after the platform fee. Never add gross and net together. Use it for any question about earnings over a period, and for comparisons with the period before.
- `list_transactions` (read, OnlyFans and Fansly): Individual transactions (subscriptions, tips, paid messages, posts) with fan, gross, net and fee. Use it when you need single payments, for example every tip from one fan.

## Content

- `mass_message_performance` (read, OnlyFans): OnlyFans accounts. Mass messages with how many fans got them, viewed and bought, and the revenue each made. A mass message's numbers are totals; never add them to per-fan message numbers. Use it to compare mass messages by reach, opens and sales.
- `top_content` (read, OnlyFans and Fansly): Posts ranked by likes or recency, with price, likes and comments. Revenue is null because neither platform says which post a purchase was for; tips are set on Fansly and null on OnlyFans. Use it to see which posts do best.
- `link_performance` (read, OnlyFans and Fansly): Tracking and free trial links with clicks, subscribers and revenue. Use it to compare tracking and trial links by subscribers and revenue.
- `list_vault` (read, OnlyFans and Fansly): Vault media with folders, how often each was sent and what it earned. Use media ids in send_message. Use it to find media ids to attach to a message.

## Platform API

- `search_api` (read, OnlyFans and Fansly): Search our catalog of read-only OnlyFans or Fansly API endpoints by what you want to do. Pass platform, or an accountId to use its platform. Use before call_api. Needs a live key and a linked account on that platform. Use it when no dedicated tool covers the data you need. Find the endpoint first. The catalog lists read (`GET`) endpoints only. It needs a live key and a workspace with at least one linked account; otherwise it returns a `missing_permission` tool error.
- `describe_endpoint` (read, OnlyFans and Fansly): Parameters, response fields and gotchas for one endpoint from search_api, on the same platform. Needs a live key and a linked account on that platform. Use it after `search_api`, to learn an endpoint's parameters before `call_api`. Like `search_api`, it needs a live key and at least one linked account, and returns `missing_permission` otherwise.
- `call_api` (read, OnlyFans and Fansly): Run a read-only API GET on the account's own platform, for an endpoint search_api finds. Prefer the dedicated tools; use this for data they do not cover. Use it to read an OnlyFans or Fansly endpoint that no dedicated tool covers. It reads the account's own platform.

## Docs

- `search_docs` (read, OnlyFans and Fansly): Search BetterFans Link documentation and guides. Use it when unsure how BetterFans Link behaves, for example what an error means.
- `get_doc` (read, OnlyFans and Fansly): Read one documentation page as markdown. Use it to read a page `search_docs` found.

## Writes and approvals

- `send_message` (write, creates an action, OnlyFans and Fansly): Ask to send a message with optional vault media to one fan. On OnlyFans it can be paid (priceCents). Creates an action a person approves before anything is sent, and returns the approval link. A key with auto-approve on sends at once and returns the result. Use it when the user wants a message sent to one fan, with the exact text they agreed to.
- `send_mass_message` (write, creates an action, OnlyFans): OnlyFans accounts. Ask to send a mass message to lists or fans. Needs approval unless the key auto-approves. Returns the approval link (or the result) and estimated recipients. Use it when the user wants one message sent to lists or many fans, with the exact text they agreed to.
- `unsend_message` (write, creates an action, OnlyFans and Fansly): Ask to take back a message, or on OnlyFans a whole mass message. Needs approval unless the key auto-approves. Use it when the user wants a sent message, or a whole OnlyFans mass message, taken back.
- `label_fan` (write, creates an action, OnlyFans): OnlyFans accounts. Ask to add a fan to a list or remove them. Needs approval unless the key auto-approves. Use it to add a fan to a list or remove them.
- `get_action` (read, OnlyFans and Fansly): Check whether a write was approved, rejected or executed, and its result. Use it after a write tool, to see whether a person approved it and what happened.

## Prompts

- `daily_briefing`: Yesterday's revenue, top fans, unread chats worth answering and account problems.
- `whale_report`: The top spenders, what they buy and who has gone quiet.
- `reply_suggestions`: Draft replies for the unread chats with paying fans.
