get_earnings_report
Full earnings report — totals plus a day, week, or month timeseries. Accepts explicit from/to dates or period presets.
Return a full earnings report for the creator — totals (gross, fees, net, transactions) plus a timeseries bucketed by day, week, or month. Accepts period presets or explicit from / to ISO dates; if both are supplied, the explicit dates win.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Annotations
It reads and never changes anything.
Arguments
project_idstringoptionalOptional project UUID to scope the report. Leave blank for all projects in the current team.
periodstringoptionalPeriod preset — 7d, 14d, 30d, 60d, 90d, mtd, qtd, ytd, 1y, all. Defaults to 30d. Ignored when both from and to are supplied.
fromstringoptionalExplicit start date (ISO YYYY-MM-DD). Overrides period when paired with "to".
tostringoptionalExplicit end date (ISO YYYY-MM-DD). Overrides period when paired with "from".
granularitystringoptionalTimeseries bucket size — day, week, month. Defaults to day.
plan_idsarrayoptionalOptional plan-UUID allow-list.
statusesarrayoptionalOptional SubscriptionStatus allow-list applied to parent subscriptions.
payment_method_idsarrayoptionalOptional payment-method UUID allow-list applied to parent subscriptions.
What it returns
{ "data": { "totals": { "gross": "4821.50", "fees": "193.27", "net": "4628.23", "transactions": 184 }, "timeseries": [ { "bucket": "2026-03-22", "gross": "145.00", "net": "139.20", "transactions": 6 } ] }, "meta": { "period": "30d", "granularity": "day" }}How it fails
VALIDATION_FAILEDgranularity is not one of day, week, month.
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks dashboard:read.
How is this guide?
Last updated on