Analytics & Reports Tools
Every figure the creator dashboard renders is readable here, from revenue and churn to the transaction list, computed by the same service layer, so an agent and the dashboard never disagree.
Every figure the creator dashboard renders is readable here, from revenue and churn to the transaction list, computed by the same service layer, so an agent and the dashboard never disagree. All of these tools answer to the dashboard:read ability.
Tools
get_connector_analyticsConnector AnalyticsANALYTICSget_dashboard_metricsHeadline Dashboard MetricsANALYTICSget_earnings_reportEarnings Report (Timeseries)ANALYTICSget_plan_performancePer-Plan PerformanceANALYTICSget_revenue_compositionRevenue CompositionANALYTICSget_subscriber_analyticsSubscriber AnalyticsANALYTICSget_transaction_breakdownTransaction Breakdown by DimensionREADlist_transactionsList Transactions (Keyset)get_connector_analytics
ANALYTICSMembers, access and revenue per connector — which connector earns, and which one members actually use.
Return one row per connector the creator's projects run or ever granted access on: the live installations, the members holding a linked account (and how many linked one in the window), the live and pending grants, the grants issued and revoked in the window, the gross revenue in USD with its transaction count and its share of the total. The same figures the dashboards' By Connector panel and GET /v1/analytics/connectors show. A purchase that grants access on two connectors counts toward both; attribution says so in the creator's language.
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 figures. Leave blank for all projects in the current team.
periodstringoptionalPeriod preset — 7d, 14d, 30d, 60d, 90d, mtd, qtd, ytd, 1y, all. Defaults to 30d.
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".
What it returns
{ "data": { "range": { "from": "2026-08-13", "to": "2026-09-12" }, "total_gross_usd": 1682.0, "attribution": "A purchase that grants access on two connectors counts toward both.", "connectors": [ { "key": "telegram", "name": "Telegram", "installations": 2, "members": 241, "members_linked_in_window": 18, "live_grants": 236, "pending_grants": 3, "granted_in_window": 21, "revoked_in_window": 4, "gross_usd": 1682.0, "transactions": 58, "share_percent": 100 } ] }, "meta": { "period": "30d", "project_id": null }}How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks dashboard:read.
get_dashboard_metrics
ANALYTICSReturn headline dashboard metrics — MRR, active subscribers, churn, and plan-level breakdown — with a period-over-period comparison.
Return headline dashboard metrics for the current creator: MRR, active subscribers, churn, and a plan-level breakdown. Delegates to the same analytics service that powers the Livewire dashboard, so responses ride the same 5-minute cache — agent calls warm the human-facing view and vice versa.
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 metrics to. 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".
compare_periodstringoptionalBaseline to compare against — "previous" (prior window) or "none". Defaults to "previous".
plan_idsarrayoptionalOptional plan-UUID allow-list.
statusesarrayoptionalOptional SubscriptionStatus allow-list.
payment_method_idsarrayoptionalOptional payment-method UUID allow-list.
What it returns
{ "data": { "mrr": "5280.00", "active_subscribers": 182, "new_subscribers": 14, "churn_rate": 3.2, "by_plan": [ { "plan_id": "c4e82f16-93a7-4d5b-b81c-6e0f27a94d3b", "name": "Premium", "active": 120 } ] }, "meta": { "period": "30d", "compare_period": "previous", "project_id": null }}mrr is recurring monthly income from active subscriptions on recurring plans, normalized to a monthly figure from each plan's billing cycle. One-time and lifetime plans do not contribute.
How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks dashboard:read.
get_earnings_report
ANALYTICSFull 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.
get_plan_performance
ANALYTICSPer-plan performance metrics for a project — active subscribers, revenue in window, and average ticket size.
Return one row per plan in a project with active-subscriber count, successful-payment count and revenue in the requested window, and an average ticket size. Accepts period presets or explicit from / to ISO dates.
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_id*stringUUID of the project to report on.
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".
What it returns
{ "data": [ { "plan_id": "c4e82f16-93a7-4d5b-b81c-6e0f27a94d3b", "plan_name": "Premium Monthly", "active_subscribers": 120, "payments_in_window": 98, "revenue_in_window": "2842.00", "avg_ticket": "29.00" } ], "meta": { "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13", "range": { "from": "2026-03-22", "to": "2026-04-22" } }}get_revenue_composition
ANALYTICSThe dashboards' donuts — fees by provider, transactions by plan kind, revenue by currency, payment outcomes and MRR by plan.
Return how the window's revenue and payments are composed, as the five donuts the dashboards draw: transaction fees by payment provider, settled transactions by plan kind (subscription, one-time, lifetime, pass), gross revenue by currency in USD, payment attempts by outcome (succeeded, pending, failed) and, unwindowed because it is a balance, the monthly recurring revenue split by plan. The same figures GET /v1/analytics/composition returns. Every dataset carries total, unit (usd or count) and slices sorted largest first, each slice with its key, label, value, share_percent and chart color.
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 figures. Leave blank for all projects in the current team.
periodstringoptionalPeriod preset — 7d, 14d, 30d, 60d, 90d, mtd, qtd, ytd, 1y, all. Defaults to 30d. MRR by plan ignores it: it is a balance, not a flow.
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".
What it returns
{ "data": { "range": { "from": "2026-08-13", "to": "2026-09-12" }, "fees_by_provider": { "total": 84.1, "unit": "usd", "slices": [ { "key": "stripe", "label": "Stripe", "value": 61.4, "share_percent": 73.01, "color": "blue" }, { "key": "paypal", "label": "PayPal", "value": 22.7, "share_percent": 26.99, "color": "violet" } ] }, "transactions_by_kind": { "total": 58, "unit": "count", "slices": [ { "key": "subscription", "label": "Subscription", "value": 41, "share_percent": 70.69, "color": "blue" }, { "key": "pass", "label": "Pass", "value": 17, "share_percent": 29.31, "color": "violet" } ] }, "revenue_by_currency": { "total": 1682.0, "unit": "usd", "slices": [ { "key": "USD", "label": "USD", "value": 1490.0, "share_percent": 88.59, "color": "blue" }, { "key": "EUR", "label": "EUR", "value": 192.0, "share_percent": 11.41, "color": "violet" } ] }, "payment_outcomes": { "total": 63, "unit": "count", "slices": [ { "key": "succeeded", "label": "Succeeded", "value": 58, "share_percent": 92.06, "color": "emerald" }, { "key": "failed", "label": "Failed", "value": 4, "share_percent": 6.35, "color": "rose" }, { "key": "pending", "label": "Pending", "value": 1, "share_percent": 1.59, "color": "amber" } ] }, "mrr_by_plan": { "total": 4120.0, "unit": "usd", "slices": [ { "key": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13", "label": "Gold", "value": 2980.0, "share_percent": 72.33, "color": "blue" }, { "key": "0c1e7a54-2f6b-4d8e-9a3c-1b5d7e9f2a46", "label": "Silver", "value": 1140.0, "share_percent": 27.67, "color": "violet" } ] } }, "meta": { "period": "30d", "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13" }}How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks dashboard:read.
get_subscriber_analytics
ANALYTICSSubscriber-centric analytics — new signups, cancellations, churn rate, trial conversion, and status distribution for a window.
Return subscriber-centric analytics for the creator — new signups, cancellations, churn rate, trial-to-paid conversion, and a status-distribution snapshot. Accepts period presets or explicit from / to ISO dates.
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 analytics. Leave blank for all projects in the current team.
periodstringoptionalPeriod preset — 7d, 14d, 30d, 60d, 90d, mtd, qtd, ytd, 1y, all. Defaults to 30d.
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".
What it returns
{ "data": { "new_subscribers": 42, "canceled_subscribers": 7, "churn_rate_percent": 2.2, "trial_started": 15, "trial_converted": 11, "trial_to_paid_percent": 73.33, "status_distribution": { "active": 341, "trialing": 4, "canceled": 22 } }, "meta": { "period": "30d" }}How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks dashboard:read.
get_transaction_breakdown
ANALYTICSUSD-normalized successful-payment totals split by plan, payment_provider, currency, or project. Includes share percent per group.
Split USD-normalized successful-payment totals by one dimension for the requested window. Supported dimensions: plan, payment_provider, currency, project. Each group carries gross_usd, transactions, and share_percent so agents can answer "which provider drove the most revenue?" in one call.
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 breakdown. Leave blank for all projects in the current team.
dimension*stringRequired. Grouping dimension — plan, payment_provider, currency, or project.
periodstringoptionalPeriod preset — 7d, 14d, 30d, 60d, 90d, mtd, qtd, ytd, 1y, all. Defaults to 30d.
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".
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": { "total_gross_usd": "4821.50", "groups": [ { "key": "stripe", "label": "Stripe", "gross_usd": "2891.00", "transactions": 110, "share_percent": 59.96 } ] }, "meta": { "period": "30d", "dimension": "payment_provider" }}How it fails
VALIDATION_FAILEDdimension is missing or not one of the allowed values.
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks dashboard:read.
Keyset-paginated transaction listing for one project with date, status, provider, plan, and currency filters. Reverse-chronological.
Row-level transaction listing scoped to a single project. Filters by date range (explicit from / to or period preset), payment status, provider, plan, and currency. Reverse-chronological by occurred_at with opaque keyset pagination via meta.next_cursor. Each row carries its owning project, plan and subscriber, so a payment can be attributed without a follow-up lookup. No raw webhook payloads are returned.
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_id*stringUUID of the project whose transactions to list.
periodstringoptionalPeriod preset — 7d, 14d, 30d, 60d, 90d, mtd, qtd, ytd, 1y, all. Defaults to 30d.
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".
statusesarrayoptionalOptional payment-status allow-list. Values: successful, failed, pending, refunded.
provider_idsarrayoptionalOptional payment-method (provider) UUID allow-list.
plan_idsarrayoptionalOptional plan-UUID allow-list applied to the parent subscription.
currency_idsarrayoptionalOptional currency UUID allow-list.
cursorstringoptionalOpaque keyset cursor returned in a prior meta.next_cursor. Pass to continue pagination.
limitintegeroptionalMaximum rows to return (1..200, default 50).
1max200What it returns
{ "data": [ { "id": "8b0c4a15-e792-4360-95d8-1f47c0b3e926", "subscription_id": "5b7e2d40-1a86-4c39-97f2-e83d0b16c5a4", "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13", "project_name": "Beautiful Mouths", "plan_id": "c4e82f16-93a7-4d5b-b81c-6e0f27a94d3b", "plan_name": "Monthly", "subscriber_id": "6f9b2e37-c184-4a05-8d72-30e16bc9f458", "subscriber_name": "Ada Lovelace", "status": "successful", "amount": "29.00", "currency": "USD", "provider": "stripe", "provider_label": "Stripe", "method_id": "a15d70c8-3e46-4b92-b70f-58c9d2140e63", "calculated_fee": "1.16", "billing_reason": "subscription_cycle", "external_payment_id": "pi_3Nxy...", "occurred_at": "2026-04-22T10:05:00Z" } ], "meta": { "next_cursor": "MjAyNi0wNC...", "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13" }}How it fails
VALIDATION_FAILEDmissing project_id.
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks project-subscription:view-any.
How is this guide?