Skip to developer documentation
Browse developer documentation
MCP documentation / Reports

Read-only tool

get_funnels

Read independent standard stages, list saved definitions, or inspect an ordered saved funnel.

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

Arguments

get_funnels arguments
FieldTypeDescription
comparestringComparison range.

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

Default: previous_period.

cursorstringOpaque next_cursor from the previous result. Keep the same website, dates, report, model, visitor filters and funnel selector.
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.
funnelstringOmit for independent standard stages. saved lists definitions; a saved funnel UUID reads ordered results.
limitintegerMaximum rows on this page.

Default: 50.

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 funnels

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_funnels",
    "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"
  },
  "funnels": [
    {
      "name": "All traffic",
      "visitors": 100,
      "buyers": 4,
      "revenue": 20000,
      "conversion_rate": 4,
      "steps": [
        {
          "step": "Visited the site",
          "visitors": 100,
          "pct_of_entry": 100,
          "drop_off_pct": 0
        },
        {
          "step": "Viewed 2+ pages",
          "visitors": 60,
          "pct_of_entry": 60,
          "drop_off_pct": 40
        },
        {
          "step": "Completed a goal",
          "visitors": 15,
          "pct_of_entry": 15,
          "drop_off_pct": 75
        },
        {
          "step": "Purchased",
          "visitors": 4,
          "pct_of_entry": 4,
          "drop_off_pct": 73.3
        }
      ]
    }
  ]
}

List saved definitions

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_funnels",
    "arguments": {
      "site": "site_example",
      "from": "2026-10-01",
      "to": "2026-10-07",
      "compare": "none",
      "funnel": "saved"
    }
  }
}

Decoded result

Illustrative JSON parsed from the result’s text block.

Decoded JSON result
{
  "site": {
    "id": "site_example",
    "domain": "shop.example.com",
    "currency": "USD"
  },
  "kind": "saved_definitions",
  "funnels": [],
  "next_cursor": null,
  "coverage": {
    "complete": true,
    "total_rows": 0,
    "returned_rows": 0
  }
}

Read an ordered saved funnel

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_funnels",
    "arguments": {
      "site": "site_example",
      "from": "2026-10-01",
      "to": "2026-10-07",
      "compare": "none",
      "funnel": "11111111-1111-4111-8111-111111111111"
    }
  }
}

Decoded result

Illustrative JSON parsed from the result’s text block.

Decoded JSON result
{
  "site": {
    "id": "site_example",
    "domain": "shop.example.com",
    "currency": "USD"
  },
  "kind": "saved",
  "period": {
    "from": "2026-10-01T00:00:00.000Z",
    "to": "2026-10-08T00:00:00.000Z",
    "label": "Custom",
    "compare": "none",
    "attribution_model": "first_touch"
  },
  "definition": {
    "id": "11111111-1111-4111-8111-111111111111",
    "name": "Checkout",
    "steps": [
      {
        "kind": "page",
        "match": "equals",
        "value": "/pricing"
      },
      {
        "kind": "purchase"
      }
    ]
  },
  "rows": [
    {
      "label": "Visited /pricing",
      "visitors": 100,
      "pctOfFirst": 100,
      "pctOfPrevious": 100,
      "revCents": 20000,
      "topSource": "Google Organic"
    },
    {
      "label": "Purchased",
      "visitors": 4,
      "pctOfFirst": 4,
      "pctOfPrevious": 4,
      "revCents": 20000,
      "topSource": "Google Organic"
    }
  ],
  "coverage": {
    "complete": true,
    "total_rows": 2,
    "returned_rows": 2
  }
}

Result fields

get_funnels result fields
FieldTypeDescription
siteobjectWebsite ID, domain and currency.
periodobjectResolved UTC boundaries; to is the exclusive timestamp after the selected end date.
steps_definitionarrayStandard stage labels, when no saved funnel is selected.
kindstringsaved_definitions or saved for a selected saved-funnel request.
definitionobjectExact saved funnel definition when funnel=ID.
rowsarrayOrdered saved-funnel results when funnel=ID; label, visitors, pctOfFirst, pctOfPrevious, revCents and topSource.
funnelsarrayStandard cohorts, or saved definitions when funnel=saved. For funnel=ID use definition and rows instead.
next_cursorstring | nullWhen provided, pass this value to continue; null means the last page. Some small-site reports omit this field.
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.

funnels[] fields

funnels nested fields
FieldTypeDescription
namestringCohort name.
visitorsintegerEntry cohort visitors.
buyersintegerBuyers in the cohort.
revenueintegerCohort revenue in cents.
conversion_ratenumberBuyer percentage.
stepsarrayIndependent stage counts, with step, visitors, pct_of_entry and drop_off_pct.

The decoded data follows the funnels 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  \"funnels\": [\n    {\n      \"name\": \"All traffic\",\n      \"visitors\": 100,\n      \"buyers\": 4,\n      \"revenue\": 20000,\n      \"conversion_rate\": 4,\n      \"steps\": [\n        {\n          \"step\": \"Visited the site\",\n          \"visitors\": 100,\n          \"pct_of_entry\": 100,\n          \"drop_off_pct\": 0\n        },\n        {\n          \"step\": \"Viewed 2+ pages\",\n          \"visitors\": 60,\n          \"pct_of_entry\": 60,\n          \"drop_off_pct\": 40\n        },\n        {\n          \"step\": \"Completed a goal\",\n          \"visitors\": 15,\n          \"pct_of_entry\": 15,\n          \"drop_off_pct\": 75\n        },\n        {\n          \"step\": \"Purchased\",\n          \"visitors\": 4,\n          \"pct_of_entry\": 4,\n          \"drop_off_pct\": 73.3\n        }\n      ]\n    }\n  ]\n}"
    }
  ]
}

Behavior and limits

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

Standard stages independently count entry-cohort members; they do not require the stages to happen in order.

funnel=saved returns kind: saved_definitions, funnels, next_cursor and coverage. Each definition includes id, name and steps.

funnel=ID returns kind: saved, period, definition, rows and coverage. Each ordered row has label, visitors, pctOfFirst, pctOfPrevious, revCents and topSource. Saved funnels have two to eight steps; a selected funnel has no cursor.

Definitions are read-only through the public API. Create and edit them in the dashboard.

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