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

# MCP tools

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

## Accounts

- `list_accounts` (read): List the OnlyFans creator accounts this workspace can use, with 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): 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://app.betterfans.link/docs/concepts/account-status).
- `link_account` (creates a hosted link): Get a hosted link a creator opens to connect their OnlyFans account. 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.
- `get_link` (read): Progress of a hosted link from link_account: waiting, signing in, needs 2FA, connected (with the new accountId) or failed. Use it after `link_account`, to see whether the creator finished.

## Fans

- `find_fans` (read): 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): 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): 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): Fans online right now, with their spend. A fan missing from this list is not known to be offline. Use it to pick fans to message now.

## Chats

- `list_chats` (read): 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): Messages in one chat, newest first. fresh=true reads live from OnlyFans 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): 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): 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): 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 about 80% of gross. 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): 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): 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): Posts ranked by likes or recency, with price, likes and comments. Tips and revenue are null because OnlyFans does not say which post a purchase was for. Use it to see which posts do best.
- `link_performance` (read): 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): 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.

## OnlyFans API

- `search_api` (read): Search our catalog of read-only OnlyFans API endpoints by what you want to do. Use before call_api. Needs a live key and a linked account. 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): Parameters, response fields and gotchas for one OnlyFans API endpoint from search_api. Needs a live key and a linked account. 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): Run a read-only OnlyFans API GET for an account. Prefer the dedicated tools; use this for data they do not cover. Use it to read an OnlyFans endpoint that no dedicated tool covers.

## Docs

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

## Writes and approvals

- `send_message` (write, needs approval): Ask to send a message (optionally paid, with vault media) to one fan. Creates a pending action; a person approves it before anything is sent. Returns the approval link. Use it when the user wants a message sent to one fan. A person approves it first.
- `send_mass_message` (write, needs approval): Ask to send a mass message to lists or fans. Needs approval. Returns the approval link and estimated recipients. Use it when the user wants one message sent to lists or many fans. A person approves it first.
- `unsend_message` (write, needs approval): Ask to take back a message or a whole mass message. Needs approval. Use it when the user wants a sent message, or a whole mass message, taken back.
- `label_fan` (write, needs approval): Ask to add a fan to a list or remove them. Needs approval. Use it to add a fan to a list or remove them.
- `get_action` (read): 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.
