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

> ## Agent Instructions
> You are reading OnlyX Help: the OnlyX Help Center and the OnlyX developer documentation. OnlyX is an AI chatting and CRM platform for OnlyFans agencies. Its AI chatter is called Hugo in the app.
> Pages at the site root (for example /inbox/..., /hugo/..., /billing/...) are Help Center articles for agency owners, admins, chatters and creators who use the app at app.onlyx.ai. Words in bold are the exact button, menu and label names the app shows; keep them exactly as written. When these pages do not answer a question, the person can email support at support@onlyx.ai.
> Pages under /developers are the developer documentation. REST API base URL: https://api.onlyx.ai/v1 (authenticate with `Authorization: Bearer <API key>`; keys start with onx_sk_ and are created in app.onlyx.ai under Settings > API & MCP). MCP server: https://mcp.onlyx.ai/mcp (OAuth, or a Bearer API key). In the API the AI chatter is `ai` on the wire. Money is integer US cents in fields ending in Cents; timestamps are UTC ISO-8601.
> Rules for assistants acting on a user's behalf: discover ids with list calls and never invent them; before any call that reaches a real fan or the live OnlyFans account (sending a message, releasing a chat to the AI, turning AI on for a chat, resolving a hand-off, turning review mode off, changing the welcome message, creating a tracking link) show the user the exact content and get explicit confirmation; send every POST with an Idempotency-Key and reuse it on retry; never resend a message whose delivery status is unconfirmed; never ask a creator for her OnlyFans password or codes - she signs in herself through a connect link and the OnlyX Login app.

# Tools and prompts

> Every tool the OnlyX MCP server offers, the API call behind it, the scope it needs, its key inputs, and whether it reaches a real fan or the live OnlyFans account. Plus the six built-in prompts.

The OnlyX MCP server has **60 tools**. Each one maps to exactly one [OnlyX API](/developers/quickstart) call and needs the same scope; your credential's creator restriction applies to all of them.

Every tool is labeled for your AI client:

| Label | Meaning | What the client and the assistant do |
| - | - | - |
| **Read** | Only reads data | May run without asking, depending on your client's settings |
| **Write** | Changes data in OnlyX only; nothing reaches fans | Usually asks you first. Tools that delete, replace or clear data (marked "deletes" or "replaces" below) are also flagged destructive, so most clients ask every time. |
| **Reaches fans** | Messages a real fan or changes the creator's live OnlyFans account | The tool tells the assistant to show you the exact content and get your confirmation before calling; most clients also show an approval prompt |

Ids always come from other tools (for example a `creatorId` from `list_creators`); the assistant is told never to guess them. Money is in cents (`1500` = \$15.00). List tools return a `nextCursor` to fetch more.

Every Write and Reaches-fans tool accepts an optional `idempotencyKey`. The tools that create or send something (`send_message`, `add_creator`, `create_content_folder`, `create_content_ladder`, `create_content_level`, `create_tracking_link`) also make one automatically: identical calls within 10 minutes count as one, so an assistant that retries after a timeout never sends or creates twice. The key used is returned; pass a new one only when the user really wants the same thing done twice.

## Workspace and creators

| Tool | Label | What it does | Key inputs | Scope |
| - | - | - | - | - |
| `get_workspace` | Read | The workspace, the credential's scopes and creator restriction (`GET /v1/me`) | none | `workspace:read` |
| `list_creators` | Read | All creators with connection status, AI switch and headline stats | `limit`, `cursor` | `creators:read` |
| `get_creator` | Read | One creator plus readiness checks | `creatorId` | `creators:read` |
| `add_creator` | Write | Adds a creator (with an automatic idempotency key). She then needs a connect link. | `displayName`, `handle`, `proxyCountry` | `creators:write` |
| `update_creator` | **Reaches fans** | Renames a creator or turns her AI on or off. Turning the AI on lets it answer every waiting fan in her AI chats, usually within seconds. | `creatorId`, `displayName`, `aiEnabled` | `creators:write` |
| `get_connection_status` | Read | Connection status, next step and sync progress. Call at most every 10 seconds. | `creatorId` | `creators:read` |
| `create_connect_link` | Write | The creator's one-time sign-in link (24 hours; returns the live one if it exists) | `creatorId` | `creators:write` |
| `get_connect_link` | Read | The current link's status, expiry and opens | `creatorId` | `creators:read` |
| `revoke_connect_link` | Write (deletes) | Revokes every unused link for the creator | `creatorId` | `creators:write` |

## Inbox

| Tool | Label | What it does | Key inputs | Scope |
| - | - | - | - | - |
| `list_conversations` | Read | Conversations with filters | `creatorId`, `status`, `unread`, `q`, `sort`, `limit`, `cursor` | `inbox:read` |
| `get_conversation_counts` | Read | How many chats are `ai`, `team`, `handoff`, `ai_off`, unread | `creatorId` | `inbox:read` |
| `get_conversation` | Read | One chat with the full fan (including `salesOptOut`), open hand-off and `aiCanReply` | `conversationId` | `inbox:read` |
| `list_messages` | Read | Messages, oldest first; page back with `before` | `conversationId`, `before`, `limit` | `inbox:read` |
| `get_message` | Read | One message; use it to follow delivery | `conversationId`, `messageId` | `inbox:read` |
| `send_message` | **Reaches fans** | Sends text, free media (`previewMediaIds`) or a paid message (`mediaIds` + `priceCents`). Uses your `idempotencyKey` or generates one and returns it for retries. Never resend on `unconfirmed`. | `conversationId`, `text`, `previewMediaIds`, `mediaIds`, `priceCents`, `idempotencyKey` | `messages:send` |
| `mark_conversation_read` | Write | Sets unread to 0 in OnlyX (no read receipt on OnlyFans) | `conversationId` | `inbox:write` |
| `mark_conversation_unread` | Write | Flags the chat unread for your team | `conversationId` | `inbox:write` |
| `take_over_conversation` | Write | Moves the chat to your team so the AI stays out | `conversationId`, `holdMinutes` (15 to 1440) | `inbox:write` |
| `release_conversation` | **Reaches fans** | Hands the chat back to the AI; it may answer the waiting message immediately | `conversationId` | `inbox:write` |
| `set_conversation_ai` | **Reaches fans** | Turns the AI off (`ai_off`) or on for one chat; turning it on may trigger an immediate reply | `conversationId`, `enabled` | `inbox:write` |
| `list_handoffs` | Read | Open hand-offs with reason, label and note, oldest first | `creatorId`, `limit`, `cursor` | `inbox:read` |
| `resolve_handoff` | **Reaches fans** | Closes a hand-off; if nobody replied or took the chat over, it returns to the AI, which may answer at once | `conversationId`, `note` | `inbox:write` |

## Fans

| Tool | Label | What it does | Key inputs | Scope |
| - | - | - | - | - |
| `list_fans` | Read | Fans with segments and sorting | `creatorId`, `q`, `segment`, `status`, `sort`, `order`, `limit`, `cursor` | `fans:read` |
| `get_fan` | Read | One fan | `fanId` | `fans:read` |
| `list_fan_purchases` | Read | What a fan bought: paid-message unlocks and tips (subscription payments are in `list_transactions`) | `fanId`, `limit`, `cursor` | `fans:read` |
| `update_fan` | Write (replaces) | Custom name, notes, mute flag (OnlyX only) | `fanId`, `customName`, `notes`, `muted` | `fans:write` |
| `list_fan_lists` | Read | The creator's fan lists and their sizes | `creatorId`, `limit`, `cursor` | `fans:read` |

## Vault

| Tool | Label | What it does | Key inputs | Scope |
| - | - | - | - | - |
| `list_vault_media` | Read | The creator's vault: ids, types, sizes, performance | `creatorId`, `type`, `listId`, `sort`, `limit`, `cursor` | `media:read` |
| `view_vault_media` | Read | Returns the thumbnail as an image the assistant can look at | `creatorId`, `mediaId` | `media:read` |

## Stats and money

| Tool | Label | What it does | Key inputs | Scope |
| - | - | - | - | - |
| `get_today_stats` | Read | Today so far: earnings, new fans, messages, AI share | `creatorId` | `stats:read` |
| `get_revenue` | Read | Revenue by type, day and seller (`ai` or `team`) | `creatorId`, `days` or `start`/`end` | `stats:read` |
| `get_audience` | Read | Fans by status and spend band, auto-renew, activity and retention | `creatorId` | `stats:read` |
| `get_overview` | Read | The full activity report. Waits up to about 45 seconds while it is prepared, then says to ask again. | `creatorId`, `days` or `start`/`end` | `stats:read` |
| `list_transactions` | Read | One creator's earnings ledger | `creatorId`, `limit`, `cursor` | `money:read` |

## AI persona

| Tool | Label | What it does | Key inputs | Scope |
| - | - | - | - | - |
| `get_persona` | Read | The full persona with readiness | `creatorId` | `ai:read` |
| `update_persona` | Write (replaces) | Partial update; `null` clears a field, lists are replaced whole | `creatorId` plus any persona fields | `ai:write` |

## AI content

| Tool | Label | What it does | Key inputs | Scope |
| - | - | - | - | - |
| `get_ai_content` | Read | The whole board: folders, ladders, levels, media, vault coverage | `creatorId` | `ai:read` |
| `create_content_folder` | Write | New folder | `creatorId`, `name` | `ai:write` |
| `update_content_folder` | Write | Rename a folder | `creatorId`, `folderId`, `name` | `ai:write` |
| `delete_content_folder` | Write (deletes) | Delete a folder; its ladders are kept, unfiled | `creatorId`, `folderId` | `ai:write` |
| `create_content_ladder` | Write | New ladder | `creatorId`, `name`, `folderId`, `mode`, `description`, `active` | `ai:write` |
| `update_content_ladder` | Write (replaces) | Change a ladder, including switching it on or off | `creatorId`, `collectionId`, fields | `ai:write` |
| `delete_content_ladder` | Write (deletes) | Delete a ladder and its levels | `creatorId`, `collectionId` | `ai:write` |
| `reorder_content_levels` | Write | Set the climb order of a ladder (levels you leave out follow in their current order) | `creatorId`, `collectionId`, `levelIds` | `ai:write` |
| `create_content_level` | Write | New level. `priceCents` is required; `0` makes it free. | `creatorId`, `collectionId`, `name`, `priceCents`, `tags`, `highlight`, `description`, `availableInPaidMessages`, `active` | `ai:write` |
| `update_content_level` | Write (replaces) | Change a level; moving it between free and priced converts its media | `creatorId`, `levelId`, fields | `ai:write` |
| `delete_content_level` | Write (deletes) | Delete a level | `creatorId`, `levelId` | `ai:write` |
| `add_media_to_level` | Write (replaces) | Put vault media on a level as `preview` or `paid` (moves it from any other level) | `creatorId`, `levelId`, `mediaIds`, `role` | `ai:write` |
| `remove_media_from_level` | Write (deletes) | Take one item off a level (it stays in the vault) | `creatorId`, `levelId`, `mediaId` | `ai:write` |
| `reorder_level_media` | Write | Order a level's preview or paid media | `creatorId`, `levelId`, `role`, `mediaIds` | `ai:write` |

## AI settings and welcome message

| Tool | Label | What it does | Key inputs | Scope |
| - | - | - | - | - |
| `get_ai_settings` | Read | AI switch, follow-ups, review mode, scheduled messages | `creatorId` | `ai:read` |
| `update_ai_settings` | **Reaches fans** | Changes the AI switch, follow-ups or review mode. Turning review mode off sends waiting replies now (also needs `messages:send`). | `creatorId`, `aiEnabled`, `followUps`, `review` | `ai:write` |
| `get_welcome_message` | Read | The OnlyFans welcome message and the status of your last change | `creatorId` | `ai:read` |
| `update_welcome_message` | **Reaches fans** | Replaces the welcome message every new subscriber gets, on the live OnlyFans account. Supports `dryRun`. | `creatorId`, `text`, `previewMediaIds`, `paidMediaIds`, `priceCents`, `enabled`, `dryRun` | `ai:write` |

## Tracking links

| Tool | Label | What it does | Key inputs | Scope |
| - | - | - | - | - |
| `list_tracking_links` | Read | Links with clicks, subscribers, earnings, cost and ROI | `creatorId`, `includeArchived`, `limit`, `cursor` | `links:read` |
| `get_tracking_link` | Read | One link with its daily history | `creatorId`, `linkId`, `days` | `links:read` |
| `update_tracking_link` | Write (replaces) | Cost, source, note, archived (OnlyX only) | `creatorId`, `linkId`, `costCents`, `source`, `note`, `archived` | `links:write` |
| `create_tracking_link` | **Reaches fans** | Creates a real link on the live OnlyFans account, in the background (5 per creator per day, 10 per workspace per hour). Poll `get_tracking_link_creation`. | `creatorId`, `kind`, `name`, `trialDays`, `claimsLimit`, `expiresAt` | `links:write` |
| `get_tracking_link_creation` | Read | Whether a new link is still `creating`, `completed` or `failed` | `creatorId`, `creationId` | `links:read` |

## Documentation

| Tool | Label | What it does | Key inputs | Scope |
| - | - | - | - | - |
| `search_docs` | Read | Searches the OnlyX Help Center and these developer docs and returns matching pages, grouped by page, with links on help.onlyx.ai | `query` | none beyond a valid connection |

## Errors in tool results

When the API refuses a call, the tool returns an error result with the API's error code, its message, and a next step the assistant can act on. For example `INSUFFICIENT_SCOPE` tells the assistant which scope the connection lacks, `RATE_LIMITED` how long to wait, and a `404` to look the id up again with a list tool. See [Errors](/developers/errors).

## Prompts

Prompts are ready-made workflows you start from your client's prompt or slash menu. Each tells the assistant which tools to use, in which order, and where to stop and ask you.

| Prompt | Arguments | What it does |
| - | - | - |
| `daily_briefing` | optional creator | Today's stats, inbox counts, open hand-offs and unread chats, then suggested actions. Sends nothing. |
| `reply_to_unread_fans` | optional creator, number of chats (1 to 20, default 5), tone | Reads unread chats, drafts replies in the creator's voice, and sends each one only after you approve it. |
| `onboard_a_creator` | optional name and OnlyFans handle | Adds the creator, creates her connect link, explains what to send her, and tracks her sign-in. |
| `build_ai_persona` | creator (required) | Interviews you or reads your notes, drafts every persona field, and saves after you approve. |
| `build_content_ladder` | creator (required), optional theme | Looks through the vault, proposes a priced ladder, and builds it after you approve. |
| `weekly_revenue_report` | optional creator | Revenue for the week versus the week before, AI versus team, best tracking links and fans to watch. |

Recipes and example wording for each are in [Using OnlyX with Claude](/developers/guides/using-with-claude).
