Skip to developer documentation
Browse developer documentation
MCP documentation / Reports

Read-only tool

get_timeseries

Read traffic and revenue over daily, weekly, monthly or quarterly buckets.

Access: OAuth analytics:read or a privately configured workspace key.

Arguments

get_timeseries arguments
FieldTypeDescription
comparestringComparison range.

Values: previous_period, mom, qoq, yoy, none.

Default: previous_period.

filtersarrayJSON array of up to twenty visitor filters, for example [{"dim":"country","op":"is","value":"US"}]. Dimensions: source, channel, campaign, entry_page, page, hostname, country, device, browser, os, goal. Operators: is, is_not. Values are exact strings up to 500 characters. All filters must match the visitor across available history; report dates then select activity for that cohort. Unmatched payments are excluded. Crawler counts remain website-wide; spend requires every filter to be source/channel/campaign. Preserve filters when paging.
fromstringInclusive start date. Supply to as well.
granularitystringRequested bucket size.

Values: daily, weekly, monthly, quarterly.

Default: daily.

modelstringHow recorded sources share revenue credit.

Values: first_touch, last_touch, linear, time_decay.

Default: first_touch.

periodstringUTC date selection. from and to override period.

Values: realtime, today, yesterday, 7d, 30d, 90d, 12m, wtd, mtd, qtd, ytd, all.

Default: 30d.

sitestringWebsite ID or domain. Required when the workspace has more than one website.
tostringInclusive end date. Supply from as well.

filters[] fields

filters nested fields
FieldTypeDescription
dimstring

Values: source, channel, campaign, entry_page, page, hostname, country, device, browser, os, goal.

opstring

Values: is, is_not.

valuestring

Read time series

Use this JSON-RPC call through an initialized MCP client. Replace example values with your actual website, dates or confirmed setup details.

MCP tools/call request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_timeseries",
    "arguments": {
      "site": "site_example",
      "from": "2026-10-01",
      "to": "2026-10-07",
      "compare": "none"
    }
  }
}

Decoded result

Illustrative JSON parsed from the result’s text block.

Decoded JSON result
{
  "site": {
    "id": "site_example",
    "domain": "shop.example.com",
    "currency": "USD"
  },
  "period": {
    "from": "2026-10-01T00:00:00.000Z",
    "to": "2026-10-08T00:00:00.000Z",
    "label": "Custom",
    "compare": "none",
    "attribution_model": "first_touch"
  },
  "granularity": "daily",
  "points": [
    {
      "label": "Oct 1",
      "visitors": 100,
      "revenue": 20000,
      "orders": 4,
      "top_source": "Google Organic",
      "comparison_visitors": null,
      "comparison_revenue": null
    }
  ]
}

Result fields

get_timeseries result fields
FieldTypeDescription
siteobjectWebsite ID, domain and currency.
periodobjectResolved UTC boundaries; to is the exclusive timestamp after the selected end date.
granularitystringRequested bucket granularity; long ranges may be grouped more coarsely.
pointsarrayReport records. See the fields below.
coverageobjectWhen provided, describes completeness, snapshot time and row coverage. Row limits apply to this page, not to headline totals.

site fields

site nested fields
FieldTypeDescription
idstringWebsite ID.
domainstringWebsite domain.
currencystringThree-letter currency.

period fields

period nested fields
FieldTypeDescription
fromstringInclusive UTC start.
tostringExclusive UTC end.
labelstringHuman-readable date selection.
comparestringComparison selection.
attribution_modelstringRevenue-credit model.

points[] fields

points nested fields
FieldTypeDescription
labelstringBucket label.
fromstringOptional database bucket inclusive UTC start.
tostringOptional database bucket exclusive UTC end.
gross_salesintegerOptional gross sales cents for database-backed results.
refundsintegerOptional refund cents for database-backed results.
visitorsintegerVisitors in the bucket.
revenueintegerRevenue in cents.
ordersintegerOrder count.
top_sourcestring | nullLeading source or null.
comparison_visitorsnumber | nullComparison visitors or null.
comparison_revenuenumber | nullComparison revenue in cents or null.

The decoded data follows the time series response contract, without the REST envelope.

Full MCP result wrapper
MCP result object
{
  "content": [
    {
      "type": "text",
      "text": "{\n  \"site\": {\n    \"id\": \"site_example\",\n    \"domain\": \"shop.example.com\",\n    \"currency\": \"USD\"\n  },\n  \"period\": {\n    \"from\": \"2026-10-01T00:00:00.000Z\",\n    \"to\": \"2026-10-08T00:00:00.000Z\",\n    \"label\": \"Custom\",\n    \"compare\": \"none\",\n    \"attribution_model\": \"first_touch\"\n  },\n  \"granularity\": \"daily\",\n  \"points\": [\n    {\n      \"label\": \"Oct 1\",\n      \"visitors\": 100,\n      \"revenue\": 20000,\n      \"orders\": 4,\n      \"top_source\": \"Google Organic\",\n      \"comparison_visitors\": null,\n      \"comparison_revenue\": null\n    }\n  ]\n}"
    }
  ]
}

Behavior and limits

Money is integer cents in site.currency. Percentages use a 0–100 scale.

Long daily ranges can be grouped weekly, and long weekly ranges monthly. Inspect returned points rather than assuming one point per day.

Larger-site results may also include from, to, gross_sales and refunds per point and a coverage object.

Report tools return the report data directly inside MCP text content. They do not add the REST status/data envelope.

With multiple websites and no site argument, this report tool returns needs_site: true and the available websites. Choose a real website and call it again.

Related documentation