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

# AI assistants

> Connect Claude or ChatGPT to your OnlyTraffic Partners account: ask about campaigns, subs, Earnings and offers in plain language, and run campaign actions with a Full key.

You can connect Claude or ChatGPT to your partner account. The assistant answers questions about your campaigns, subs, Earnings and offers from your real data. With a **Full** key it can also run the 7 campaign actions of the [Write API](/docs/partners/api/write-api), after asking you first.

The assistant sees only the account you connect. It uses one of your API keys, so everything it can do is limited by that key.

## Endpoint

```text theme={null}
https://partners.onlytraffic.com/mcp
```

The same URL is shown in the cabinet: **Tools -> API** ([partners.onlytraffic.com/tools/api](https://partners.onlytraffic.com/tools/api)), card **AI assistants (MCP)**, with a **Copy** button.

## Supported assistants

| Assistant                                          | Supported |
| -------------------------------------------------- | --------- |
| Claude (claude.ai and Claude Desktop)              | Yes       |
| ChatGPT                                            | Yes       |
| Local clients (Claude Code, Cursor, custom agents) | Not yet   |

## Connect in Claude

<Steps>
  <Step title="Open Connectors">
    In Claude, open **Settings -> Connectors**.
  </Step>

  <Step title="Add a custom connector">
    Click **Add custom connector** and paste the URL:

    ```text theme={null}
    https://partners.onlytraffic.com/mcp
    ```
  </Step>

  <Step title="Sign in">
    Claude opens the OnlyTraffic Partners page. If you are not signed in to the cabinet, sign in as usual. You never paste an API key anywhere.
  </Step>

  <Step title="Pick a key">
    The consent page shows which assistant asks for access and what it will be able to do. Under **Key the assistant will use**, pick one of your existing API keys, or choose **Create a key for this assistant** and set its name, access (**Read-only** or **Full access**) and expiry (30, 90, 180 or 365 days, or never). The defaults are Read-only and 90 days.
  </Step>

  <Step title="Allow">
    Click **Allow**. The page closes and the connector is ready. **Deny** cancels the connection.
  </Step>
</Steps>

## Connect in ChatGPT

<Steps>
  <Step title="Turn on Developer mode">
    In ChatGPT, open **Settings -> Security & Login** and turn on **Developer mode**. Without it ChatGPT does not let you add your own connector.
  </Step>

  <Step title="Add the connector">
    Open [chatgpt.com/plugins](https://chatgpt.com/plugins), add a new one and paste the same URL as the server address:

    ```text theme={null}
    https://partners.onlytraffic.com/mcp
    ```
  </Step>

  <Step title="Sign in, pick a key, allow">
    The rest is the same as in Claude: sign in to the cabinet if asked, pick or create a key on the consent page, click **Allow**.
  </Step>
</Steps>

<Info>Developer mode is available only on ChatGPT plans that support custom connectors. If you do not see the switch, check your ChatGPT plan first.</Info>

## Example questions

* Which CPL campaigns are waiting for my decision?
* My Earnings for the last 30 days by pricing model.
* Show my live CPL offers with free slots.
* Which RevShare campaigns brought the most fans this month?
* How many subs did I deliver on `#cplo_…` and what is left?
* Which client offers in Find Offers pay the most per first purchase and have no campaign of mine yet?
* CPC clicks and Earnings per day for the last week.

## What the assistant can read

| Data                | What is in it                                                                                                                                                    |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| RevShare campaigns  | Your campaigns with their `#revc_…` ids: creator, type, status, share %, visits, fans, Earnings, link                                                            |
| CPL campaigns       | Campaigns with their `#cplo_…` ids: status, goal action, subs ordered and delivered, price per sub, Earnings, link once accepted, which ones need your decision  |
| CPL offers          | Your own offers by number (`#350`): slots, price, status (live, paused, archived, exclusive), performance figures                                                |
| Client offers       | The Find Offers catalog: the offer id, the price you earn per sub and per other goal actions, trial order rules, whether you already run a campaign on the offer |
| RevShare offers     | The catalog of creators you can promote: share %, guarantee, page type, ARPU, 7-day traffic, whether you can start a campaign                                    |
| Subs and fans       | Fans from your RevShare and CPL campaigns: badges, amount spent, purchase and message rates, ARPU                                                                |
| Transactions        | What fans paid and your Earnings share, processed or refunded, paid or pending                                                                                   |
| Daily stats         | Fans, visits, Earnings and revenue per day, for RevShare and CPL                                                                                                 |
| CPC orders          | Clicks ordered and delivered, price per click, Earnings, status                                                                                                  |
| CPC daily stats     | Clicks and Earnings of CPC orders per day                                                                                                                        |
| CPC widget Earnings | Earnings per property per day: on hold, released, void                                                                                                           |
| CPC categories      | The category dictionary                                                                                                                                          |

Limits on what is exposed:

* **No personal data.** Fan names, client logins and client contacts are never available to the assistant. Creators appear by their OnlyFans username, clients by public id only.
* **Your own account.** The assistant sees your username, a masked e-mail (`e***@domain.com`) and your public name if you chose one. It never sees your internal account id or your full e-mail.
* **The same catalog as the cabinet.** Client offers a client closed for your account are not listed, and a payout format closed for you shows no price, the same as in Find Offers. Prices are what you earn.
* **Row lists are capped.** A list of individual rows (for example fans or transactions) returns at most 100 rows per request. Totals, rates and breakdowns by day, campaign or status are not affected, so ask for those instead of full dumps.

## Actions

With a **Full** key the assistant can run these 7 actions:

| Action                                                 | Same as                                                                                  |
| ------------------------------------------------------ | ---------------------------------------------------------------------------------------- |
| Start a RevShare campaign                              | [`POST /api/marketer/revshare/campaigns/start`](/docs/partners/api/revshare-campaign-start)   |
| Stop a RevShare campaign                               | [`POST /api/marketer/revshare/campaigns/stop`](/docs/partners/api/revshare-campaign-stop)     |
| Update a RevShare campaign (name, note, tags)          | [`POST /api/marketer/revshare/campaigns/update`](/docs/partners/api/revshare-campaign-update) |
| Accept a CPL campaign                                  | [`POST /api/marketer/cpl/campaigns/accept`](/docs/partners/api/cpl-campaign-accept)           |
| Reject a CPL campaign                                  | [`POST /api/marketer/cpl/campaigns/reject`](/docs/partners/api/cpl-campaign-reject)           |
| Stop a CPL campaign                                    | [`POST /api/marketer/cpl/campaigns/stop`](/docs/partners/api/cpl-campaign-stop)               |
| Start a campaign on a client's CPL offer (Find Offers) | [`POST /api/marketer/cpl/campaigns/start`](/docs/partners/api/cpl-campaign-start)             |

* **Same operations as the Write API.** The same ownership checks, limits, cooldowns and validation messages as in the cabinet apply. See [Write API](/docs/partners/api/write-api).
* **Full key only.** With a Read-only key the actions are hidden from the assistant. It can answer questions and build reports, nothing else.
* **The assistant asks first.** Before any action it states what will happen and waits for your confirmation.
* **Duplicates are dropped.** If the assistant repeats an identical start or accept within 15 minutes, the campaign is not started twice: it gets the result of the first run, marked as a repeat.
* **Trial orders.** On a client offer with a trial order the campaign starts delivering right away. Once the delivered subs reach the trial amount it is put on hold until the client approves or rejects it. Until then you cannot start another campaign on that creator.

<Warning>Actions change real campaigns. Read the assistant's confirmation message before you agree, the same way you would check a form in the cabinet.</Warning>

## Keys

A connection is bound to exactly one API key, the one you picked on the consent page.

* The key's access level is the assistant's access level: **Read-only** reads, **Full** reads and runs actions.
* An account has up to **5** active keys. When you already have 5, the consent page cannot create a new one: pick an existing key or revoke one in **Tools -> API**.
* Revoking the key disconnects every assistant that uses it. The same happens when the key expires.
* In the key list, a key used by an assistant carries an **MCP** mark.

See [Authentication](/docs/partners/api/authentication) for how keys work.

## Rate limits

Limits are per account, counted per minute and per hour. They are separate from the REST API limits, so an assistant cannot use up the budget of your own integration.

| What the assistant does                                 | Per minute | Per hour |
| ------------------------------------------------------- | ---------- | -------- |
| A data question                                         | 60         | 1000     |
| A combined data question (several reads in one request) | 20         | 200      |
| Looking up what data is available, account info         | 120        | 1000     |
| Stop, reject or update a campaign                       | 20         | 100      |
| Start a campaign or accept a CPL campaign               | 5          | 10       |

On top of that, all assistants of one account can send at most 120 requests per minute in total. When a limit is hit, the assistant is told how long to wait and continues after that.

Campaign starts run one at a time per account, the same as in the cabinet and the REST API.

## Time zone and money

All money is in USD. Timestamps are in the API time zone (UTC+03:00) and carry the offset (`2026-09-18T10:40:38+03:00`), the same as in the REST API. Days in daily stats, and ranges like "today" or "last 7 days", follow that zone too.

## Disconnect

Any of these ends the access:

* **In the assistant.** Remove the connector in the Claude or ChatGPT settings.
* **In the cabinet.** Open **Tools -> API**, find the assistant in the **AI assistants (MCP)** card and click **Disconnect**. The assistant loses access immediately. The key stays.
* **Revoke the key.** In **Tools -> API**, revoke the key the assistant uses. Every assistant on that key is disconnected, and so is any script using the same key.

You can connect the assistant again at any time from its settings.

## Audit

Every action run by an assistant is listed in the **Request log** of the key it uses, in **Tools -> API**, with an **MCP** mark, so you can tell assistant calls from your own scripts. Read questions are not listed there.

The **AI assistants (MCP)** card shows each connected assistant, the key it uses, when it was connected and when it was last used.

## Troubleshooting

<AccordionGroup>
  <Accordion title="The connection fails">
    * Only Claude and ChatGPT can connect. Local clients are not supported yet.
    * After **Disconnect** in the cabinet, or after revoking the key, the old connector no longer works. Remove it in the assistant's settings and add it again with the same URL.
  </Accordion>

  <Accordion title="The assistant worked and now answers 401 or asks to reconnect">
    The key behind the connection was revoked or has expired, or the assistant was disconnected in the cabinet. A connection that was not used for 30 days also ends. Connect again and pick a working key.
  </Accordion>

  <Accordion title="The assistant refuses to start or stop a campaign">
    The connection uses a Read-only key. Actions need a Full key: disconnect the assistant, connect again and pick or create a **Full access** key.
  </Accordion>

  <Accordion title="The assistant says it hit a rate limit">
    Wait for the time it names. Starts and accepts have the smallest budget: 5 per minute and 10 per hour.
  </Accordion>

  <Accordion title="An action failed with a message from the platform">
    The messages are the same as in the cabinet and the Write API. See [Write API](/docs/partners/api/write-api).
  </Accordion>
</AccordionGroup>
