> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onlyfanskit.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Tools

> How the tool catalog is organized.

The server exposes a tool per common SDK operation — 500+ in total, organized
along the same domains as the [SDK resources](/sdk/overview).

| Domain             | Example tools                                                    |
| ------------------ | ---------------------------------------------------------------- |
| Messaging          | `list-chats`, `send-message`, `search-messages`, `get-message`   |
| Fans & subscribers | `list-active-subscribers`, `get-subscribers-count`, `block-user` |
| Content            | `create-post`, `like-post`, `list-vault-lists`, `get-post-stats` |
| Earnings           | `get-earnings-chart`, `get-top-fans`, `get-fans-activity`        |
| Growth             | `list-campaigns`, `toggle-trial-link`, `reserve-promotion`       |
| Streams            | `post-stream-comment`, `get-stream-tips`, `save-stream-as-post`  |

## Discovery

Every tool ships:

* a **name** the agent matches against intent,
* a **description** the agent reads to decide when to call it,
* a **schema** with a description on each input field.

Agents enumerate the catalog over MCP automatically — you don't wire tools by
hand. Ask in plain English ("send a thank-you DM to my newest subscriber") and
the agent picks the right tool and arguments.

## Return values

Tools return JSON (as text content) so the agent can read and reason over the
result. Errors propagate as the SDK's `OnlyFansAPIError` with a useful message;
the agent surfaces them in its reply.

<Tip>
  Tool and field descriptions are what make agents reliable. If you fork the
  server to add a tool, write the description as instructions to the agent —
  specific and unambiguous.
</Tip>
