Docs

AI assistants

Tools

Every tool BLU offers AI assistants — what it reads, the permission it needs, its inputs and the API endpoint behind it.

On this page

Each data tool reads exactly what one API endpoint returns, with the same permission and the same rules — the same code answers both, so for the same window your assistant and the API give the same numbers. Two differences are deliberate. In the tools, a date on its own as the end of a window means that whole day (2026-10-19 = through 23:59:59 UTC), because that is what people mean; the API reads a bare date as the start of that day, so send it a full date-time to be exact. And a date that doesn't exist, such as 2026-09-31, is refused by the tools with a message saying so, where the API rolls it over into the next month (2026-09-31 becomes 2026-10-01). The descriptions below are the words BLU gives the assistant, so they are written for it.

All tools only read — none of them can send a message to a fan or change anything in BLU. A tool your key has no permission for still appears in the assistant; using it returns a message naming the permission to turn on.

Creator data

list_creators

List creators

Connected creators Always granted Same data as GET /v1/creators Costs 1 unit

List the creators currently connected to this agency: name, nickname, tags and platformPid (the OnlyFans performer id every other tool filters by). Use this first to resolve a creator's name to its platformPid.

Inputs (4)
  • creatorId string Only this creator: its platformPid (from list_creators).
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • fields array of string Only return these fields of each row (for example ["id","platformPid","name"]). Omit for every field.

list_all_creators

List all creators, including removed ones

All creators Always granted Same data as GET /v1/all-creators Costs 1 unit

List every creator under the agency whatever its connection status, including removed creators (status, deletedTime). Use this for questions about creators that were disconnected or removed. Needs a key with access to all creators. Known limitation: deletedTime is only populated for creators removed after status logging began — BLU hard-deletes creator rows, so it cannot be reconstructed for earlier removals. At most the 100 most recent removals are listed.

Inputs (4)
  • creatorId string Only this creator: its platformPid (from list_creators).
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • fields array of string Only return these fields of each row (for example ["id","platformPid","name"]). Omit for every field.

list_transactions

List transactions

Transactions Opt-in Same data as GET /v1/transactions Costs 1 unit

List individual revenue transactions (subscriptions, messages/PPV, tips, posts, streams) newest first, with amount, fee and net in CENTS, the transaction type and status, and a pseudonymous fanId. status is OnlyFans' own: done = completed, loading = still processing, undo = reversed (refunded or charged back), pending_return = a refund in progress; BLU's own earnings count every status except undo. Use this for "show recent payments" or to add up revenue over a short window. Window: startTime/endTime (default: the last 3 days; up to 366 days back). Get platformPid values from list_creators. Known limitation: type is derived from OnlyFans' own transaction description, which is localised. For a creator whose OnlyFans account is in a language BLU does not yet classify, type is null rather than a wrong bucket.

Inputs (6)
  • creatorId string Only this creator: its platformPid (from list_creators).
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • endTime string Window end, UTC, inclusive: a date (2026-10-19 = through the end of that day) or a date-time. Omit for up to now.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • startTime string Window start, UTC: a date (2026-10-01 = from 00:00 that day) or a date-time (2026-10-01T09:30:00Z). Omit both bounds for the last 72 hours. History goes back 366 days.
  • fields array of string Only return these fields of each row (for example ["id","transactionId","platformPid"]). Omit for every field.

list_refunds

List refunds and chargebacks

Refunds Opt-in Same data as GET /v1/refunds Costs 1 unit

List refunds and chargebacks: when the payment was made, when it was disputed, the amount in CENTS and OnlyFans' reason code. Window: startTime/endTime (default: the last 3 days; up to 366 days back). Get platformPid values from list_creators. Known limitation: transactionId names the disputed payment (transactionId on /v1/transactions) only when BLU holds that payment: a chargeback for a payment made before BLU began syncing the creator has null there and in refundReason, which on production today is most of them. paymentStatus is the payment's status when BLU first recorded the chargeback.

Inputs (6)
  • creatorId string Only this creator: its platformPid (from list_creators).
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • endTime string Window end, UTC, inclusive: a date (2026-10-19 = through the end of that day) or a date-time. Omit for up to now.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • startTime string Window start, UTC: a date (2026-10-01 = from 00:00 that day) or a date-time (2026-10-01T09:30:00Z). Omit both bounds for the last 72 hours. History goes back 366 days.
  • fields array of string Only return these fields of each row (for example ["id","transactionId","platformPid"]). Omit for every field.

list_automated_messages

List automated messages

Automated messages Opt-in Same data as GET /v1/automated-messages Costs 1 unit

List automated message campaigns: trigger, audience filters, the messages and price (CENTS), status and how many times each was sent. Purchases and revenue per campaign are not attributed yet (null). Get platformPid values from list_creators. Known limitation: Per-collection send, purchase and revenue counters are null, and so are campaign-level purchases and revenue: BLU records deliveries per recipient but does not yet attribute purchases to a campaign. totalNumberOfTimeSent is complete. employeeId is null when the campaign's author is no longer one of your employees.

Inputs (4)
  • creatorId string Only this creator: its platformPid (from list_creators).
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • fields array of string Only return these fields of each row (for example ["automatedMessageId","platformPid","employeeId"]). Omit for every field.

list_priority_mass_messages

List priority mass messages

Priority mass messages (PMM) Opt-in Same data as GET /v1/priority-mass-messages Costs 1 unit

List priority mass message campaigns: audience rules, price (CENTS), status, send time and how many were sent or failed. Purchases and revenue per campaign are not attributed yet (null). Get platformPid values from list_creators. Known limitation: Campaign-level purchases and revenue are null: BLU records deliveries per recipient but does not yet attribute purchases to a campaign. totalNumberOfTimeSent is complete. employeeId is null when the campaign's author is no longer one of your employees.

Inputs (4)
  • creatorId string Only this creator: its platformPid (from list_creators).
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • fields array of string Only return these fields of each row (for example ["platformPid","employeeId","status"]). Omit for every field.

list_sales_records

List sales with employee attribution

Sales records Opt-in Same data as GET /v1/transaction-perf/details Costs 5 units

List individual sales (paid PPV unlocks and tips) with who gets the credit: the attribution rule, the credited employee and the attributed amount (CENTS). Use this for "which chatter made this sale". Refunded or charged-back sales are left out unless includeReversed=true. Window: startTime/endTime (up to 31 days per call, default the last 3 days). Get platformPid values from list_creators. Known limitation: A sale is a paid PPV unlock or a tip: offers nobody bought and free unlocks are not returned. campaignRef groups the sales of one campaign or mass send — a PPV sent to a single fan has none. A campaign of another agency's on a creator you share is never named.

Inputs (7)
  • creatorId string Only this creator: its platformPid (from list_creators).
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • endTime string Window end, UTC, inclusive: a date (2026-10-19 = through the end of that day) or a date-time. Omit for up to now.
  • includeReversed boolean default false true to include sales that were later refunded or charged back.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • startTime string Window start, UTC: a date (2026-10-01 = from 00:00 that day) or a date-time (2026-10-01T09:30:00Z). Omit both bounds for the last 72 hours. At most 31 days per call. History goes back 366 days.
  • fields array of string Only return these fields of each row (for example ["id","transactionId","platformPid"]). Omit for every field.

get_creator_chat_stats

Chat activity per creator

Messages sent statistics Opt-in Same data as GET /v1/creator-report/chat-summary Costs 10 units

Per creator, over the window: how fast fans got a reply (replyTime, milliseconds), messages sent through BLU, fans chatted, and PPVs sent and unlocked. Window: reportStartTime/reportEndTime (YYYY-MM-DD; up to 31 days, default today and the 3 days before). Up to 10 creators per call. Get platformPid values from list_creators. Known limitation: replyTime is measured for fan messages from 2026-09-12: a window that starts earlier averages only the part after that date, and one entirely before it is null. It counts a reply by anyone on the creator side, including one typed in the OnlyFans Manager, which BLU sees but cannot attribute to an employee; a mass message is never a reply. Messages and fans chatted count what employees sent THROUGH BLU. Before 2026-09-12, replyTime carried the fan's latency to an employee, which is now fanReplyTimeMs.

Inputs (6)
  • creatorIds array of string at most 10 Only these creators: up to 10 platformPid values (from list_creators). Omit for every creator this connection can see.
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • reportEndTime string Last day of the report, YYYY-MM-DD, inclusive. Defaults to today.
  • reportStartTime string First day of the report, YYYY-MM-DD (the agency's own days). Omit both for today and the 3 days before. At most 31 days per call. History goes back 366 days.
  • fields array of string Only return these fields of each row (for example ["platformPid","date","replyTime"]). Omit for every field.

get_fan_counts

Active and expired fans per day

Fans' status Opt-in Same data as GET /v1/creator-report/fans/count Costs 10 units

Per creator and day: activeFans (subscribed at the END of that day), expiredFans (lapsed DURING that day — a flow, never add it up as a total) and paidActiveFans. Window: reportStartTime/reportEndTime (YYYY-MM-DD; up to 31 days, default today and the 3 days before). Up to 10 creators per call. Get platformPid values from list_creators. Known limitation: Days before the nightly rollup began are reconstructed from the current fan snapshot and are a LOWER BOUND: a fan who churned long enough ago that OnlyFans no longer returns them is absent, and a fan who left and re-subscribed keeps only their latest window. Recent days are measured, not reconstructed.

Inputs (6)
  • creatorIds array of string at most 10 Only these creators: up to 10 platformPid values (from list_creators). Omit for every creator this connection can see.
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • reportEndTime string Last day of the report, YYYY-MM-DD, inclusive. Defaults to today.
  • reportStartTime string First day of the report, YYYY-MM-DD (the agency's own days). Omit both for today and the 3 days before. At most 31 days per call. History goes back 366 days.
  • fields array of string Only return these fields of each row (for example ["platformPid","date","activeFans"]). Omit for every field.

get_new_and_renewed_fans

New and renewed subscriptions per day

New and renewed fans Opt-in Same data as GET /v1/creator-report/fans/subscriber-count Costs 10 units

Per creator and day: new paid subscriptions and renewals, from the creator's own ledger. A free page reports 0 here even while it gains fans — use get_fan_counts for that. Window: reportStartTime/reportEndTime (YYYY-MM-DD; up to 31 days, default today and the 3 days before). Up to 10 creators per call. Get platformPid values from list_creators.

Inputs (6)
  • creatorIds array of string at most 10 Only these creators: up to 10 platformPid values (from list_creators). Omit for every creator this connection can see.
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • reportEndTime string Last day of the report, YYYY-MM-DD, inclusive. Defaults to today.
  • reportStartTime string First day of the report, YYYY-MM-DD (the agency's own days). Omit both for today and the 3 days before. At most 31 days per call. History goes back 366 days.
  • fields array of string Only return these fields of each row (for example ["platformPid","date","newSubscribers"]). Omit for every field.

get_fans_with_renew_on

Fans with auto-renew on or off per day

Fans with renew on Opt-in Same data as GET /v1/creator-report/fans/renew-on Costs 10 units

Per creator and day: active fans whose subscription will renew, and those who set it to expire. null before 2026-09-12. Window: reportStartTime/reportEndTime (YYYY-MM-DD; up to 31 days, default today and the 3 days before). Up to 10 creators per call. Get platformPid values from list_creators. Known limitation: Returns null for days before 2026-09-12. Before then this endpoint counted a different OnlyFans flag, which read about 98% renewing where OnlyFans itself shows about 61%; those values are withdrawn rather than republished, and renewal state is point-in-time, so it cannot be reconstructed. Each day's value is one nightly snapshot of the fans active at that day's end, from each fan's own subscription as BLU last synced it: a fan who changed their mind since is counted as before, and for a creator with more than about 8,000 fans the older fans are not re-read daily. Never reported as 0 for a day that was not observed.

Inputs (6)
  • creatorIds array of string at most 10 Only these creators: up to 10 platformPid values (from list_creators). Omit for every creator this connection can see.
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • reportEndTime string Last day of the report, YYYY-MM-DD, inclusive. Defaults to today.
  • reportStartTime string First day of the report, YYYY-MM-DD (the agency's own days). Omit both for today and the 3 days before. At most 31 days per call. History goes back 366 days.
  • fields array of string Only return these fields of each row (for example ["platformPid","date","fansWithRenewOn"]). Omit for every field.

get_fans_today

Today's subscribers so far

Fans today Opt-in Same data as GET /v1/creator-report/fans/today Costs 1 unit

Today so far, per creator: OnlyFans' own subscriber count, and the subscriptions bought and renewed since midnight in the agency's time zone. Use this for "how are we doing today". Get platformPid values from list_creators. Known limitation: subscribersCount is null until the creator's first sync after 2026-09-12. The subscription counts are null for a creator who is disconnected, because BLU is then not reading their ledger. They count PAID subscriptions, so a free page reports 0 new ones, as on /fans/subscriber-count.

Inputs (4)
  • creatorId string Only this creator: its platformPid (from list_creators).
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • fields array of string Only return these fields of each row (for example ["platformPid","date","utcOffset"]). Omit for every field.

get_subscription_length

Average subscription length per day

Fans' subscription length Opt-in Same data as GET /v1/creator-report/fans/avg-subscription-length Costs 10 units

Per creator and day: the average subscription length, in DAYS. Window: reportStartTime/reportEndTime (YYYY-MM-DD; up to 31 days, default today and the 3 days before). Up to 10 creators per call. Get platformPid values from list_creators. Known limitation: Days before the nightly rollup began are reconstructed from the current fan snapshot and are a LOWER BOUND: a fan who churned long enough ago that OnlyFans no longer returns them is absent, and a fan who left and re-subscribed keeps only their latest window. Recent days are measured, not reconstructed.

Inputs (6)
  • creatorIds array of string at most 10 Only these creators: up to 10 platformPid values (from list_creators). Omit for every creator this connection can see.
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • reportEndTime string Last day of the report, YYYY-MM-DD, inclusive. Defaults to today.
  • reportStartTime string First day of the report, YYYY-MM-DD (the agency's own days). Omit both for today and the 3 days before. At most 31 days per call. History goes back 366 days.
  • fields array of string Only return these fields of each row (for example ["platformPid","date","avgSubscriptionLength"]). Omit for every field.

get_profile_visitors

Profile visitors per day

Profile visitors Opt-in Same data as GET /v1/creator-report/reach/profile-visitor-count Costs 10 units

Per creator and day: profile visitors as OnlyFans counts them. Window: reportStartTime/reportEndTime (YYYY-MM-DD; up to 31 days, default today and the 3 days before). Up to 10 creators per call. Get platformPid values from list_creators. Known limitation: The daily guest / logged-in split is null: BLU reads OnlyFans' daily visitor chart as one total. OnlyFans' split by visitor type is published per country, over the trailing year, on /v1/creator-report/reach/top-countries. The daily total itself is OnlyFans' own pre-aggregated daily bucket republished under the creator's local-day label — OnlyFans returns no intraday detail, so it cannot be re-bucketed, and where your report timezone differs from the account's the edges will not line up exactly.

Inputs (6)
  • creatorIds array of string at most 10 Only these creators: up to 10 platformPid values (from list_creators). Omit for every creator this connection can see.
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • reportEndTime string Last day of the report, YYYY-MM-DD, inclusive. Defaults to today.
  • reportStartTime string First day of the report, YYYY-MM-DD (the agency's own days). Omit both for today and the 3 days before. At most 31 days per call. History goes back 366 days.
  • fields array of string Only return these fields of each row (for example ["platformPid","date","profileVisitors"]). Omit for every field.

get_profile_views_by_country

Profile views by country

Profile views by country Opt-in Same data as GET /v1/creator-report/reach/top-countries Costs 1 unit

Where each creator's profile views come from: OnlyFans' top ten countries plus "Others" over the trailing year, split into guests and logged-in users. These are views, not unique visitors, and nothing here locates an individual fan. Get platformPid values from list_creators. Known limitation: These are profile VIEWS, not unique visitors, exactly as OnlyFans reports them, re-read about hourly. OnlyFans gives no daily breakdown by country and no split by subscriber, so neither is offered. Nothing here identifies or locates a fan, and no endpoint in this API publishes a fan's location.

Inputs (4)
  • creatorId string Only this creator: its platformPid (from list_creators).
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • fields array of string Only return these fields of each row (for example ["platformPid","countryCode","countryName"]). Omit for every field.

list_creator_status_changes

Creator connect / disconnect history

Creator status log Opt-in Same data as GET /v1/creator/status-change-log Costs 10 units

Connect, disconnect, verification and removal events for creators, with who made the change (null = it was automatic, e.g. an expired session). Use this for "when did this creator disconnect". Window: reportStartTime/reportEndTime (YYYY-MM-DD; up to 31 days, default today and the 3 days before). Up to 10 creators per call. Get platformPid values from list_creators. Known limitation: FORWARD-ONLY. A creator is hard-deleted along with everything attached to it, so there was nothing to reconstruct from: the log starts on the day BLU began recording it and no earlier history exists or can be produced. Removal events are only returned to a key scoped to ALL creators — a removed creator cannot be named in a creatorIds filter.

Inputs (6)
  • creatorIds array of string at most 10 Only these creators: up to 10 platformPid values (from list_creators). Omit for every creator this connection can see.
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • reportEndTime string Last day of the report, YYYY-MM-DD, inclusive. Defaults to today.
  • reportStartTime string First day of the report, YYYY-MM-DD (the agency's own days). Omit both for today and the 3 days before. At most 31 days per call. History goes back 366 days.
  • fields array of string Only return these fields of each row (for example ["id","creatorId","platformPid"]). Omit for every field.

Employee data

list_employees

List employees

Employees Always granted Same data as GET /v1/employees Costs 1 unit

List the agency's employees (chatters and managers): id, name, status (deactivated ones are included) and when they were added. Use this to turn an employeeId from another tool into a name. Known limitation: deletedTime is always null: BLU hard-deletes employee records, so a removed employee is absent rather than tombstoned. Deactivated employees are returned with a DEACTIVATED status.

Inputs (4)
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • employeeIds array of integer at most 10 Only these employees: up to 10 employeeId values (from list_employees). Omit for everyone.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • fields array of string Only return these fields of each row (for example ["employeeId","employeeName","status"]). Omit for every field.

list_employee_creators

Creators assigned to an employee

Assigned creators Always granted Same data as GET /v1/employees/assigned-creators Costs 1 unit

List the creators one employee is assigned to. Needs employeeId (from list_employees).

Inputs (4)
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • employeeId integer required The employee: an employeeId from list_employees.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • fields array of string Only return these fields of each row (for example ["employeeId","creatorId","platformPid"]). Omit for every field.

get_employee_sales_stats

Sales per employee per day

Sales statistics Opt-in Same data as GET /v1/employee-report/employee-sales-summary Costs 10 units

Sales credited to each employee, per creator and day (the agency's report days): total sales, PPV and tips, in CENTS. Refunded and charged-back sales are excluded. Use this for "who was our best chatter last week". Window: reportStartTime/reportEndTime (YYYY-MM-DD; up to 31 days, default today and the 3 days before). Up to 10 employeeIds per call; omit for everyone. Known limitation: A row exists for each employee, creator and day with any activity through BLU; date is a day in your agency's report timezone, and today's rows fill in through the day. salesAmount includes tips, and ppvSalesAmount is salesAmount minus tipsSalesAmount. The split by the channel a sale came through (direct message, priority mass, mass message) is not available yet.

Inputs (6)
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • employeeIds array of integer at most 10 Only these employees: up to 10 employeeId values (from list_employees). Omit for everyone.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • reportEndTime string Last day of the report, YYYY-MM-DD, inclusive. Defaults to today.
  • reportStartTime string First day of the report, YYYY-MM-DD (the agency's own days). Omit both for today and the 3 days before. At most 31 days per call. History goes back 366 days.
  • fields array of string Only return these fields of each row (for example ["employeeId","date","platformPid"]). Omit for every field.

get_employee_chat_stats

Chat activity per employee per day

Chatting statistics Opt-in Same data as GET /v1/employee-report/employee-chat-summary Costs 10 units

Per employee, creator and day: messages and PPVs sent through BLU, PPVs unlocked, fans chatted, characters typed and how fast the employee replied to fans (milliseconds; from 2026-09-12). Window: reportStartTime/reportEndTime (YYYY-MM-DD; up to 31 days, default today and the 3 days before). Up to 10 employeeIds per call; omit for everyone. Known limitation: Messages count what employees sent THROUGH BLU: a message typed in the OnlyFans Manager tab is not seen, and neither is a reply sent that way. Response times are measured from 2026-09-12 — earlier days are null — as the time from a fan's message to the employee's first reply through BLU; a mass message is never a reply. responseTimeBasedOnClockedHours counts only fan messages that arrived while the employee was clocked in; percentiles are null below 5 replies. responseTimeBasedOnScheduledHours is null: replies are not yet measured against the shift schedule. goldenRatio is null: BLU has no source for it.

Inputs (6)
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • employeeIds array of integer at most 10 Only these employees: up to 10 employeeId values (from list_employees). Omit for everyone.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • reportEndTime string Last day of the report, YYYY-MM-DD, inclusive. Defaults to today.
  • reportStartTime string First day of the report, YYYY-MM-DD (the agency's own days). Omit both for today and the 3 days before. At most 31 days per call. History goes back 366 days.
  • fields array of string Only return these fields of each row (for example ["employeeId","date","platformPid"]). Omit for every field.

Organization data

get_monthly_billing

BLU billing per month

Invoice Opt-in Same data as GET /v1/invoice-data/monthly-billing Costs 1 unit

The agency's BLU bill per month: subscription charges, deductions, total, balance due, paid and pending (CENTS). This is what the agency pays BLU, not creator earnings. Window: startTime/endTime (default the last 3 days — pass the months you want). Known limitation: BLU bills from a credit ledger rather than issuing invoices, so discount and igic are always 0 and invoiceId is a derived, stable identifier rather than a document number.

Inputs (5)
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • endTime string Window end, UTC, inclusive: a date (2026-10-19 = through the end of that day) or a date-time. Omit for up to now.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • startTime string Window start, UTC: a date (2026-10-01 = from 00:00 that day) or a date-time (2026-10-01T09:30:00Z). Omit both bounds for the last 72 hours. History goes back 366 days.
  • fields array of string Only return these fields of each row (for example ["billingId","invoiceId","billingPeriod"]). Omit for every field.

list_reassigned_sales

Manually reassigned sales

Reassigned sales log Opt-in Same data as GET /v1/transaction-perf/manual-assignment/details Costs 5 units

Sales whose credit was moved by hand from one employee to another: who moved it, from whom, to whom and when. Window: startTime/endTime (up to 31 days per call, default the last 3 days).

Inputs (5)
  • cursor string The cursor from the previous call, to get the next page. Keep every other argument the same.
  • endTime string Window end, UTC, inclusive: a date (2026-10-19 = through the end of that day) or a date-time. Omit for up to now.
  • limit integer default 50 · 1–100 How many rows to return, 1-100 (default 50).
  • startTime string Window start, UTC: a date (2026-10-01 = from 00:00 that day) or a date-time (2026-10-01T09:30:00Z). Omit both bounds for the last 72 hours. At most 31 days per call. History goes back 366 days.
  • fields array of string Only return these fields of each row (for example ["id","transactionId","transactionPerfId"]). Omit for every field.

This connection

get_connection_info

What this connection can read

No permission needed Costs 1 unit

Describe this BLU connection: the agency, the API key it uses, which creators and employees it covers, which kinds of data it may read (and which it may not), whether fans' names are included, its limits and the agency's report time zone. Call this first, and whenever a tool says something is not allowed.

Inputs (0)

Takes no input.

Not offered as a tool

  • Platform ranking (GET /v1/creator-report/rank): BLU does not capture OnlyFans' performance rank yet, so this endpoint returns null for every day. It becomes a tool when it carries data.

What BLU tells the assistant

When an assistant connects, BLU introduces itself as BLU (server name blu, version 1.0.0) with these instructions, word for word:

BLU gives read-only access to one agency's BLU data: creators, fans, transactions, sales, chat and employee performance, links, mass messages and billing. Nothing can be changed. Money is integer cents (1230 = $12.30). Report days are the agency's own days; timestamps are UTC. null means BLU does not know — never treat it as 0. Call get_connection_info first to see what this connection can read. Creators are identified by platformPid (from list_creators); pass it as creatorId or creatorIds. Windowed tools default to a short recent window (the last 72 hours, or today and the 3 days before for daily reports), so pass explicit dates for anything longer. Lists are paginated: when hasMore is true, call again with the returned cursor and the same filters. Use `fields` to fetch only the columns you need when reading many rows. If a tool says the key lacks a permission, tell the user which one: the agency owner turns it on in BLU, under API keys → Edit.

Every tool is marked read-only, non-destructive and idempotent, so assistants that ask before running a tool can tell it changes nothing.

Updated