Fansly over MCP
Drive Fansly accounts from Claude, ChatGPT, Manus, or any AI agent. Same MCP server, same API key — Fansly tools are prefixed fansly_.
Fansly is already in your MCP server
There is no separate Fansly MCP server. Fansly tools live on the same endpoint you already use:
https://app.onlyfansapi.com/mcp/onlyfans-mcpIf you have already connected Claude, ChatGPT, or Manus, you have Fansly today — no reinstall, no second connector, no new API key. Reconnect the connector once so your client refreshes its tool list, and the Fansly tools appear.
Every documented Fansly endpoint maps one-to-one to a tool, so the Fansly API reference is the current list — or just ask your client for tools/list.
Already set up? Skip to tool naming — that's the only thing that behaves differently.
Prerequisites
- An OnlyFans API account and an API key
- At least one connected Fansly account
Connecting a Fansly account works exactly like connecting an OnlyFans one, and your agent can do it: fansly_startAuthentication, then fansly_submit2FA if a code is required, polling fansly_pollAuthenticationStatus in between.
Tool naming
Every Fansly tool is prefixed fansly_. OnlyFans tools are unprefixed.
| Task | OnlyFans | Fansly |
|---|---|---|
| List connected accounts | listAccounts | fansly_listAccounts |
| List chats | listChats | fansly_listChats |
| Send a chat message | sendChatMessage | fansly_sendChatMessage |
| Send a mass message | sendMassMessage | fansly_sendMassMessage |
| Create a post | sendPost | fansly_sendPost |
| Upload media | uploadMedia | fansly_uploadMedia |
This prefix is not cosmetic. The two platforms share 26 identically-named operations — listAccounts, sendMassMessage, sendPost, blockUser, listVaultMedia and more. Without a namespace, an agent could not tell which platform a tool belonged to.
The two platforms are separate APIs with separate accounts. A fansly_acct_… ID will not work on an OnlyFans tool, and an acct_… ID will not work on a Fansly tool. If a tool call fails with a 403 or "not found" on an account you know exists, check that the prefix of the tool matches the prefix of the account ID.
Account IDs
Most tools are account-scoped, and the parameter name differs per platform:
| Platform | Parameter | Format | Discover with |
|---|---|---|---|
| OnlyFans | account | acct_XXXXXXXXXXXXXXX | listAccounts |
| Fansly | fanslyAccount | fansly_acct_XXXXXXXXXXXXXXX | fansly_listAccounts |
If your agent works on one creator, pin it in the system prompt so it stops asking:
Use Fansly account fansly_acct_XXXXXXXXXXXXXXX for all tool calls unless told otherwise.Narrowing the tool list
The server exposes 350+ tools — 290+ OnlyFans and 80+ Fansly. That is a lot of context to hand a model, and some clients cap how many tools they will load.
If you only work with one platform, append ?platforms= to the MCP URL and the server registers only that platform's tools:
https://app.onlyfansapi.com/mcp/onlyfans-mcp?platforms=fanslyhttps://app.onlyfansapi.com/mcp/onlyfans-mcp?platforms=onlyfansBoth platforms is the default, and ?platforms=onlyfans,fansly is the same as omitting it.
The filter applies to tool execution as well as listing — a connection scoped to fansly cannot call an OnlyFans tool even if the model guesses the name. It is a safe way to hand an agent one platform and nothing else.
An unrecognised value (a typo like ?platforms=fansley) falls back to loading every tool rather than none, so a bad config never leaves you with an empty server.
Fansly-specific behaviour
Four things differ from OnlyFans in ways an agent cannot infer from the tool schema alone.
There is no "FYP post" tool
Posting to the For You Page is a parameter on fansly_sendPost, not a separate endpoint:
fypFlags: 0— post to the FYP if it meets Fansly's requirements (default)fypFlags: 4— do not post to the FYP
If you ask an agent to "make an FYP post" it may hunt for a tool that does not exist. Say "post it and leave FYP enabled" instead, or pin the behaviour in your system prompt.
Media upload is URL-based over MCP
fansly_uploadMedia accepts either a raw file or a file_url. Binary file parameters are stripped from MCP tool schemas — they cannot be transported as JSON — so over MCP you always pass file_url.
For large files and videos, set async: true. The call returns HTTP 202 with a polling_url; poll fansly_getUploadStatus until it completes, then pass the returned fansly_media_… ID in mediaFiles on a post or message.
Direct binary uploads still work over plain HTTP — this only affects the MCP tool surface. See Upload Media.
Prices are in thousandths of a dollar
Fansly's smallest money unit is not cents. On price (for requirePurchase), 1000 = $1.00 and 10000 = $10.00.
Models frequently assume cents and under-price PPV content by 100×. If your agent sets prices, state the unit explicitly in your system prompt.
Media is attached by upload ID
mediaFiles on fansly_sendPost, fansly_sendChatMessage, and fansly_sendMassMessage takes fansly_media_… IDs returned by fansly_uploadMedia — not URLs and not vault IDs. Upload first, then attach.
Example prompts
Drop these into a chat with the connector enabled:
Chat ops
- "List my Fansly chats with unread messages and summarize what each fan last asked."
- "Reply to every unanswered Fansly chat from the last 24h with a short friendly nudge. Draft them, don't send."
- "Who are my top 20 Fansly supporters this month?"
Mass messaging
- "Send a Fansly mass message to
groupIdX announcing tomorrow's drop. Text only, no media." - "Show my scheduled Fansly mass messages and cancel anything going out this weekend."
Posting
- "Upload
https://example.com/promo.jpgto Fansly, then post it to my main wall with FYP enabled." - "Post this caption to Fansly, lock the media behind a $12 unlock, and give it a free preview."
Reporting
- "Compare this month's earnings across my OnlyFans and Fansly accounts."
- "Pull Fansly tracking link revenue stats for the last 30 days and rank the links."
The cross-platform prompt above is the reason both platforms share one server: the agent can call listAccounts and fansly_listAccounts in the same turn and reconcile them without you switching connectors.
Troubleshooting
Sending safely
Don't let an autonomous agent blind-retry a send. If fansly_sendChatMessage or fansly_sendMassMessage times out, the message may already have gone through — retrying can deliver it twice. Have the agent call fansly_listChatMessages to confirm before resending, and prefer draft-then-approve for mass messages.
The same controls that apply to OnlyFans apply here: scoped API keys, per-account permissions, and a full audit log of every call your agent makes. See Control & safety.
See also
- MCP overview — what MCP is, the server URL, and supported clients
- Claude · ChatGPT · Manus — install guides
- Embed in your app — backend integration with your own API key
- Fansly API reference — every endpoint exposed as a tool
- Connect a Fansly account — prerequisite for account-scoped calls