Browse developer documentation
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
| Field | Type | Description |
|---|---|---|
compare | string | Comparison range. Values: previous_period, mom, qoq, yoy, none. Default: |
cursor | string | Opaque next_cursor from the previous result. Keep the same website, dates, report, model, visitor filters and funnel selector. |
filters | array | JSON 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. |
from | string | Inclusive start date. Supply to as well. |
funnel | string | Omit for independent standard stages. saved lists definitions; a saved funnel UUID reads ordered results. |
limit | integer | Maximum rows on this page. Default: |
model | string | How recorded sources share revenue credit. Values: first_touch, last_touch, linear, time_decay. Default: |
period | string | UTC date selection. from and to override period. Values: realtime, today, yesterday, 7d, 30d, 90d, 12m, wtd, mtd, qtd, ytd, all. Default: |
site | string | Website ID or domain. Required when the workspace has more than one website. |
to | string | Inclusive end date. Supply from as well. |
filters[] fields
| Field | Type | Description |
|---|---|---|
dim | string | Values: source, channel, campaign, entry_page, page, hostname, country, device, browser, os, goal. |
op | string | Values: is, is_not. |
value | string |
Read funnels
Use this JSON-RPC call through an initialized MCP client. Replace example values with your actual website, dates or confirmed setup details.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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.
{
"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
| Field | Type | Description |
|---|---|---|
site | object | Website ID, domain and currency. |
period | object | Resolved UTC boundaries; to is the exclusive timestamp after the selected end date. |
steps_definition | array | Standard stage labels, when no saved funnel is selected. |
kind | string | saved_definitions or saved for a selected saved-funnel request. |
definition | object | Exact saved funnel definition when funnel=ID. |
rows | array | Ordered saved-funnel results when funnel=ID; label, visitors, pctOfFirst, pctOfPrevious, revCents and topSource. |
funnels | array | Standard cohorts, or saved definitions when funnel=saved. For funnel=ID use definition and rows instead. |
next_cursor | string | null | When provided, pass this value to continue; null means the last page. Some small-site reports omit this field. |
coverage | object | When provided, describes completeness, snapshot time and row coverage. Row limits apply to this page, not to headline totals. |
site fields
| Field | Type | Description |
|---|---|---|
id | string | Website ID. |
domain | string | Website domain. |
currency | string | Three-letter currency. |
period fields
| Field | Type | Description |
|---|---|---|
from | string | Inclusive UTC start. |
to | string | Exclusive UTC end. |
label | string | Human-readable date selection. |
compare | string | Comparison selection. |
attribution_model | string | Revenue-credit model. |
funnels[] fields
| Field | Type | Description |
|---|---|---|
name | string | Cohort name. |
visitors | integer | Entry cohort visitors. |
buyers | integer | Buyers in the cohort. |
revenue | integer | Cohort revenue in cents. |
conversion_rate | number | Buyer percentage. |
steps | array | Independent 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
{
"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.