Skip to main content
Glama
Akxan
by Akxan

GA4 funnel report

ga_run_funnel_report
Read-onlyIdempotent

Analyze GA4 user drop-off across funnel steps to pinpoint where users abandon and identify next actions. Supports breakdowns and trended views for deeper diagnosis.

Instructions

Funnel (v1alpha): users reaching each step and drop-off between steps. Steps are event names with an optional page-path filter, e.g. [{name:'Tour page', event:'page_view', pagePathContains:'/tours/'}, {name:'Book', event:'click_book'}]. Open by default; closed=true requires entering at step 1. Optional breakdown dimension, nextAction (what abandoners did next) and TRENDED_FUNNEL (per-date) visualization.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoRows returned per sub-report.
stepsYes
closedNo
endDateNoyesterday
breakdownNoDimension to break the funnel down by, e.g. 'deviceCategory' or 'sessionDefaultChannelGroup'.
startDateNo28daysAgo
nextActionNoDimension showing what users did after each step, e.g. 'eventName' or 'unifiedPagePathScreen'; comes back in the visualization block.
propertyIdYesGA4 property ID, e.g. '123456789' (see ga_list_properties).
filterLogicNoHow to join several dimensionFilters.and
visualizationNoTRENDED_FUNNEL adds a date column so the funnel can be read per day.STANDARD_FUNNEL
breakdownLimitNoValues kept for the breakdown dimension.
nextActionLimitNoNext-action values kept per step.
dimensionFiltersNoRestrict the funnel to a segment, e.g. sessionDefaultChannelGroup EXACT 'Organic Search'.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv0.10.0
    • addedInput schema / properties / breakdownLimit
      Added value: +{
      +  "default": 5,
      +  "description": "Values kept for the breakdown dimension.",
      +  "maximum": 15,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / dimensionFilters
      Added value: +{
      +  "description": "Restrict the funnel to a segment, e.g. sessionDefaultChannelGroup EXACT 'Organic Search'.",
      +  "items": {
      +    "properties": {
      +      "caseSensitive": {
      +        "default": false,
      +        "type": "boolean"
      +      },
      +      "field": {
      +        "description": "Dimension API name, e.g. pagePath, country.",
      +        "type": "string"
      +      },
      +      "matchType": {
      +        "default": "EXACT",
      +        "enum": [
      +          "EXACT",
      +          "BEGINS_WITH",
      +          "ENDS_WITH",
      +          "CONTAINS",
      +          "FULL_REGEXP",
      +          "PARTIAL_REGEXP"
      +        ],
      +        "type": "string"
      +      },
      +      "not": {
      +        "default": false,
      +        "description": "Negate this filter.",
      +        "type": "boolean"
      +      },
      +      "value": {
      +        "description": "Single value, matched with matchType.",
      +        "type": "string"
      +      },
      +      "values": {
      +        "description": "Match any value in this list (inListFilter), e.g. 20 page paths. Use instead of value.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "minItems": 1,
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "field"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / filterLogic
      Added value: +{
      +  "default": "and",
      +  "description": "How to join several dimensionFilters.",
      +  "enum": [
      +    "and",
      +    "or"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / limit
      Added value: +{
      +  "default": 250,
      +  "description": "Rows returned per sub-report.",
      +  "maximum": 10000,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / nextAction
      Added value: +{
      +  "description": "Dimension showing what users did after each step, e.g. 'eventName' or 'unifiedPagePathScreen'; comes back in the visualization block.",
      +  "type": "string"
      +}
    • addedInput schema / properties / nextActionLimit
      Added value: +{
      +  "default": 5,
      +  "description": "Next-action values kept per step.",
      +  "maximum": 15,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / visualization
      Added value: +{
      +  "default": "STANDARD_FUNNEL",
      +  "description": "TRENDED_FUNNEL adds a date column so the funnel can be read per day.",
      +  "enum": [
      +    "STANDARD_FUNNEL",
      +    "TRENDED_FUNNEL"
      +  ],
      +  "type": "string"
      +}
  2. Addedv0.5.1

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description doesn't need to cover safety. It does add value by explaining open vs closed funnels and the 'nextAction' behavior, which are not in the schema, but could be more explicit about response structure or edge cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a compact paragraph that covers critical concepts and an example, without excessive detail. It could be slightly more structured with bullet points, but it effectively front-loads the core funnel concept and example.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential behavioral aspects of a complex funnel tool, including step configuration, open/closed modes, and optional analysis layers. It lacks mention of some advanced parameters like 'filterLogic' but the schema covers them. Overall sufficient for an experienced GA4 user.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 69%, and the description explains key parameters like 'closed' and 'nextAction' beyond the schema, but leaves some parameters (like 'filterLogic') to schema definitions. It adds value but doesn't fully compensate for the uncovered parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs a GA4 funnel report, defining what it measures (users reaching steps, drop-off) and even provides a concrete example of the steps structure, distinguishing it from siblingreport tools by its specific funnel focus.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context via the example and optional parameters, but doesn't explicitly state when to use this vs. alternatives like ga_run_report or ga_run_pivot_report. It provides clear functional context but lacks explicit exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.