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

Members, 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

Read-only

It reads and never changes anything.

Arguments

project_idstringoptional

Optional project UUID to scope the figures. Leave blank for all projects in the current team.

periodstringoptional

Period preset — 7d, 14d, 30d, 60d, 90d, mtd, qtd, ytd, 1y, all. Defaults to 30d.

fromstringoptional

Explicit start date (ISO YYYY-MM-DD). Overrides period when paired with "to".

tostringoptional

Explicit 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_REQUIRED

no authenticated user on the request.

TOKEN_MISSING_ABILITY

token lacks dashboard:read.

Return 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

Read-only

It reads and never changes anything.

Arguments

project_idstringoptional

Optional project UUID to scope the metrics to. Leave blank for all projects in the current team.

periodstringoptional

Period preset — 7d, 14d, 30d, 60d, 90d, mtd, qtd, ytd, 1y, all. Defaults to 30d. Ignored when both from and to are supplied.

fromstringoptional

Explicit start date (ISO YYYY-MM-DD). Overrides period when paired with "to".

tostringoptional

Explicit end date (ISO YYYY-MM-DD). Overrides period when paired with "from".

compare_periodstringoptional

Baseline to compare against — "previous" (prior window) or "none". Defaults to "previous".

plan_idsarrayoptional

Optional plan-UUID allow-list.

statusesarrayoptional

Optional SubscriptionStatus allow-list.

payment_method_idsarrayoptional

Optional 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_REQUIRED

no authenticated user on the request.

TOKEN_MISSING_ABILITY

token lacks dashboard:read.

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

Read-only

It reads and never changes anything.

Arguments

project_idstringoptional

Optional project UUID to scope the report. Leave blank for all projects in the current team.

periodstringoptional

Period preset — 7d, 14d, 30d, 60d, 90d, mtd, qtd, ytd, 1y, all. Defaults to 30d. Ignored when both from and to are supplied.

fromstringoptional

Explicit start date (ISO YYYY-MM-DD). Overrides period when paired with "to".

tostringoptional

Explicit end date (ISO YYYY-MM-DD). Overrides period when paired with "from".

granularitystringoptional

Timeseries bucket size — day, week, month. Defaults to day.

plan_idsarrayoptional

Optional plan-UUID allow-list.

statusesarrayoptional

Optional SubscriptionStatus allow-list applied to parent subscriptions.

payment_method_idsarrayoptional

Optional 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_FAILED

granularity is not one of day, week, month.

AUTHENTICATION_REQUIRED

no authenticated user on the request.

TOKEN_MISSING_ABILITY

token lacks dashboard:read.

Per-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

Read-only

It reads and never changes anything.

Arguments

project_id*string

UUID of the project to report on.

periodstringoptional

Period preset — 7d, 14d, 30d, 60d, 90d, mtd, qtd, ytd, 1y, all. Defaults to 30d. Ignored when both from and to are supplied.

fromstringoptional

Explicit start date (ISO YYYY-MM-DD). Overrides period when paired with "to".

tostringoptional

Explicit 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"    }  }}

How it fails

VALIDATION_FAILED

missing project_id.

TOKEN_MISSING_ABILITY

token lacks dashboard:read.

The 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

Read-only

It reads and never changes anything.

Arguments

project_idstringoptional

Optional project UUID to scope the figures. Leave blank for all projects in the current team.

periodstringoptional

Period 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.

fromstringoptional

Explicit start date (ISO YYYY-MM-DD). Overrides period when paired with "to".

tostringoptional

Explicit 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_REQUIRED

no authenticated user on the request.

TOKEN_MISSING_ABILITY

token lacks dashboard:read.

Subscriber-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

Read-only

It reads and never changes anything.

Arguments

project_idstringoptional

Optional project UUID to scope the analytics. Leave blank for all projects in the current team.

periodstringoptional

Period preset — 7d, 14d, 30d, 60d, 90d, mtd, qtd, ytd, 1y, all. Defaults to 30d.

fromstringoptional

Explicit start date (ISO YYYY-MM-DD). Overrides period when paired with "to".

tostringoptional

Explicit 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_REQUIRED

no authenticated user on the request.

TOKEN_MISSING_ABILITY

token lacks dashboard:read.

USD-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.

The REST endpoint and this tool share one action, so validation, permissions and events are identical.

Annotations

Read-only

It reads and never changes anything.

Arguments

project_idstringoptional

Optional project UUID to scope the breakdown. Leave blank for all projects in the current team.

dimension*string

Required. Grouping dimension — plan, payment_provider, currency, or project.

periodstringoptional

Period preset — 7d, 14d, 30d, 60d, 90d, mtd, qtd, ytd, 1y, all. Defaults to 30d.

fromstringoptional

Explicit start date (ISO YYYY-MM-DD). Overrides period when paired with "to".

tostringoptional

Explicit end date (ISO YYYY-MM-DD). Overrides period when paired with "from".

plan_idsarrayoptional

Optional plan-UUID allow-list.

statusesarrayoptional

Optional SubscriptionStatus allow-list applied to parent subscriptions.

payment_method_idsarrayoptional

Optional 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_FAILED

dimension is missing or not one of the allowed values.

AUTHENTICATION_REQUIRED

no authenticated user on the request.

TOKEN_MISSING_ABILITY

token 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.

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

Read-only

It reads and never changes anything.

Arguments

project_id*string

UUID of the project whose transactions to list.

periodstringoptional

Period preset — 7d, 14d, 30d, 60d, 90d, mtd, qtd, ytd, 1y, all. Defaults to 30d.

fromstringoptional

Explicit start date (ISO YYYY-MM-DD). Overrides period when paired with "to".

tostringoptional

Explicit end date (ISO YYYY-MM-DD). Overrides period when paired with "from".

statusesarrayoptional

Optional payment-status allow-list. Values: successful, failed, pending, refunded.

provider_idsarrayoptional

Optional payment-method (provider) UUID allow-list.

plan_idsarrayoptional

Optional plan-UUID allow-list applied to the parent subscription.

currency_idsarrayoptional

Optional currency UUID allow-list.

cursorstringoptional

Opaque keyset cursor returned in a prior meta.next_cursor. Pass to continue pagination.

limitintegeroptional

Maximum rows to return (1..200, default 50).

min1max200

What 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_FAILED

missing project_id.

AUTHENTICATION_REQUIRED

no authenticated user on the request.

TOKEN_MISSING_ABILITY

token lacks project-subscription:view-any.

How is this guide?

On this page

Subscriby is a product designed by you — for you.No boardroom full of executives deciding what we ships next. Our roadmap always shaped by you with your feedback.

Share feedback or a request