Skip to main content
Glama

PixelFlow

Get tracking overview

get_overview
Read-onlyIdempotent

Get tracking totals for one site over a date range: the count of each event, such as Purchase or Lead, revenue, events delivered and failed per pixel, events blocked by consent or bot detection, event counts per day or week, and, for the newest 500 conversions in the range, how many carried a hashed email or phone. Ranges before the plan's analytics lookback are refused, and a range too large to read at once is refused as range_too_wide with the largest range that fits. Use it for "how is tracking doing" and weekly report questions.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "site_id": "<site_id>",
      "from": "<from>",
      "to": "<to>"
    },
    "name": "get_overview"
  }
}

Input Schema

NameRequiredDescriptionDefault
toYesRange end. YYYY-MM-DD means the end of that day in `timezone`, so the whole day is included; a full ISO 8601 timestamp is used as is.
fromYesRange start. YYYY-MM-DD means the start of that day in `timezone`; a full ISO 8601 timestamp is used as is.
site_idYesSite to act on, as returned by list_sites.
group_byNoSeries bucket. Default day.
timezoneNoIANA time zone such as Europe/Berlin. Default UTC. Returned times and day buckets use it.

Output Schema

NameRequiredDescriptionDefault
failedYesEvents that failed with an error. Events still sending are in neither count.
pixelsYesPer pixel: `pixel_id` (integer), `name` (string), `ad_platform` (string or null), `sent` (integer), `failed` (integer, not delivered).
seriesYesEvent counts per bucket: `bucket` (string, YYYY-MM-DD of the day or week start in timezone), `event`, `count`.
windowYesExact range read, after applying timezone.
blockedYesEvents not sent because of consent or bots: `total`, `bots_blocked`, `consent_events_blocked` (integers), `reasons` (object, reason to count: denied, no_decision, gpc, bot), and `event_counts` (object, event to count, such as { "Purchase": 9 }). For the individual blocked events, see get_blocked_events.
revenueYesRevenue in the currency with the most valued events: `amount` (number), `currency` (string or null), `events` (integer, valued events summed).
group_byYesSeries bucket used.
timezoneYesIANA time zone used for dates and buckets. UTC when none was passed.
deliveredYesEvents delivered to the ad platforms.
event_countYesEvents read to compute these numbers.
event_countsYesCount per event in the range, such as { "Purchase": 64, "Lead": 211 }. Events with no count are left out.
field_presenceYesHashed email and phone on the newest conversions in the range. Only recent conversions are checked, from checked_from; null when the whole range is older or the sample could not be read in time. Every other field counts all events.
revenue_by_currencyYesSame fields, one row per currency.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • removedOutput schema / properties / field_presence / additionalProperties
      Removed value: -false
    • addedOutput schema / properties / field_presence / anyOf
      Added value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "checked": {
      +        "description": "Conversions checked. Below max_checked means every conversion since checked_from was checked.",
      +        "type": "integer"
      +      },
      +      "checked_from": {
      +        "description": "Start of the period checked, which runs to window.to: window.from when every conversion was checked, otherwise the time of the oldest conversion checked.",
      +        "format": "date-time",
      +        "type": "string"
      +      },
      +      "events": {
      +        "description": "Per conversion event, such as Purchase (never PageView): `event`, `checked` (conversions of this event checked), `with_email`, `with_phone` (how many of those carried a hashed email or phone).",
      +        "items": {
      +          "additionalProperties": false,
      +          "description": "One conversion event.",
      +          "properties": {
      +            "checked": {
      +              "description": "Conversions checked.",
      +              "type": "integer"
      +            },
      +            "event": {
      +              "description": "Event name.",
      +              "type": "string"
      +            },
      +            "with_email": {
      +              "description": "Carried a hashed email.",
      +              "type": "integer"
      +            },
      +            "with_phone": {
      +              "description": "Carried a hashed phone.",
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "event",
      +            "checked",
      +            "with_email",
      +            "with_phone"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "max_checked": {
      +        "description": "Most conversions checked in one call.",
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "max_checked",
      +      "checked",
      +      "checked_from",
      +      "events"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / field_presence / properties
      Removed value: -{
      -  "checked": {
      -    "description": "Conversions checked. Below max_checked means every conversion since checked_from was checked.",
      -    "type": "integer"
      -  },
      -  "checked_from": {
      -    "description": "Start of the period checked, which runs to window.to: window.from when every conversion was checked, otherwise the time of the oldest conversion checked.",
      -    "format": "date-time",
      -    "type": "string"
      -  },
      -  "events": {
      -    "description": "Per conversion event, such as Purchase (never PageView): `event`, `checked` (conversions of this event checked), `with_email`, `with_phone` (how many of those carried a hashed email or phone).",
      -    "items": {
      -      "additionalProperties": false,
      -      "description": "One conversion event.",
      -      "properties": {
      -        "checked": {
      -          "description": "Conversions checked.",
      -          "type": "integer"
      -        },
      -        "event": {
      -          "description": "Event name.",
      -          "type": "string"
      -        },
      -        "with_email": {
      -          "description": "Carried a hashed email.",
      -          "type": "integer"
      -        },
      -        "with_phone": {
      -          "description": "Carried a hashed phone.",
      -          "type": "integer"
      -        }
      -      },
      -      "required": [
      -        "event",
      -        "checked",
      -        "with_email",
      -        "with_phone"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "max_checked": {
      -    "description": "Most conversions checked in one call.",
      -    "type": "integer"
      -  }
      -}
    • removedOutput schema / properties / field_presence / required
      Removed value: -[
      -  "max_checked",
      -  "checked",
      -  "checked_from",
      -  "events"
      -]
    • removedOutput schema / properties / field_presence / type
      Removed value: -[
      -  "object",
      -  "null"
      -]
    • addedOutput schema / properties / pixels / items / properties / ad_platform / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / pixels / items / properties / ad_platform / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / revenue / properties / currency / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / revenue / properties / currency / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
    • addedOutput schema / properties / revenue_by_currency / items / properties / currency / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / revenue_by_currency / items / properties / currency / type
      Removed value: -[
      -  "string",
      -  "null"
      -]
  2. Changed9 schema fields changed
    • changedInput schema / properties / from / description
      Previous value: -"Range start. YYYY-MM-DD is the start of that calendar day in timezone. A full ISO instant is that instant"New value: +"Range start. YYYY-MM-DD means the start of that day in `timezone`; a full ISO 8601 timestamp is used as is."
    • changedInput schema / properties / group_by / description
      Previous value: -"day or week. Omitted means day"New value: +"Series bucket. Default day."
    • addedInput schema / properties / group_by / enum
      Added value: +[
      +  "day",
      +  "week"
      +]
    • removedInput schema / properties / site
      Removed value: -{
      -  "description": "Domain, id, or external id from list_sites",
      -  "type": "string"
      -}
    • addedInput schema / properties / site_id
      Added value: +{
      +  "description": "Site to act on, as returned by list_sites.",
      +  "type": "integer"
      +}
    • changedInput schema / properties / timezone / description
      Previous value: -"IANA timezone. Omitted means UTC, and the response says UTC"New value: +"IANA time zone such as Europe/Berlin. Default UTC. Returned times and day buckets use it."
    • changedInput schema / properties / to / description
      Previous value: -"Range end. YYYY-MM-DD is the end of that calendar day in timezone, so later events that day are included. A full ISO instant is that instant"New value: +"Range end. YYYY-MM-DD means the end of that day in `timezone`, so the whole day is included; a full ISO 8601 timestamp is used as is."
    • changedInput schema / required
      Previous value: -[
      -  "site",
      -  "from",
      -  "to"
      -]New value: +[
      +  "site_id",
      +  "from",
      +  "to"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "blocked": {
      +      "additionalProperties": false,
      +      "description": "Events not sent because of consent or bots: `total`, `bots_blocked`, `consent_events_blocked` (integers), `reasons` (object, reason to count: denied, no_decision, gpc, bot), and `event_counts` (object, event to count, such as { \"Purchase\": 9 }). For the individual blocked events, see get_blocked_events.",
      +      "properties": {
      +        "bots_blocked": {
      +          "description": "Blocked as bots.",
      +          "type": "integer"
      +        },
      +        "consent_events_blocked": {
      +          "description": "Blocked by consent.",
      +          "type": "integer"
      +        },
      +        "event_counts": {
      +          "additionalProperties": {
      +            "type": "integer"
      +          },
      +          "description": "Event to count.",
      +          "type": "object"
      +        },
      +        "reasons": {
      +          "additionalProperties": {
      +            "type": "integer"
      +          },
      +          "description": "Reason to count.",
      +          "type": "object"
      +        },
      +        "total": {
      +          "description": "All blocked events.",
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "total",
      +        "bots_blocked",
      +        "consent_events_blocked",
      +        "reasons",
      +        "event_counts"
      +      ],
      +      "type": "object"
      +    },
      +    "delivered": {
      +      "additionalProperties": false,
      +      "description": "Events delivered to the ad platforms.",
      +      "properties": {
      +        "count": {
      +          "description": "Events delivered.",
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "count"
      +      ],
      +      "type": "object"
      +    },
      +    "event_count": {
      +      "description": "Events read to compute these numbers.",
      +      "type": "integer"
      +    },
      +    "event_counts": {
      +      "additionalProperties": {
      +        "type": "integer"
      +      },
      +      "description": "Count per event in the range, such as { \"Purchase\": 64, \"Lead\": 211 }. Events with no count are left out.",
      +      "type": "object"
      +    },
      +    "failed": {
      +      "additionalProperties": false,
      +      "description": "Events that failed with an error. Events still sending are in neither count.",
      +      "properties": {
      +        "count": {
      +          "description": "Events failed.",
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "count"
      +      ],
      +      "type": "object"
      +    },
      +    "field_presence": {
      +      "additionalProperties": false,
      +      "description": "Hashed email and phone on the newest conversions in the range. Only recent conversions are checked, from checked_from; null when the whole range is older or the sample could not be read in time. Every other field counts all events.",
      +      "properties": {
      +        "checked": {
      +          "description": "Conversions checked. Below max_checked means every conversion since checked_from was checked.",
      +          "type": "integer"
      +        },
      +        "checked_from": {
      +          "description": "Start of the period checked, which runs to window.to: window.from when every conversion was checked, otherwise the time of the oldest conversion checked.",
      +          "format": "date-time",
      +          "type": "string"
      +        },
      +        "events": {
      +          "description": "Per conversion event, such as Purchase (never PageView): `event`, `checked` (conversions of this event checked), `with_email`, `with_phone` (how many of those carried a hashed email or phone).",
      +          "items": {
      +            "additionalProperties": false,
      +            "description": "One conversion event.",
      +            "properties": {
      +              "checked": {
      +                "description": "Conversions checked.",
      +                "type": "integer"
      +              },
      +              "event": {
      +                "description": "Event name.",
      +                "type": "string"
      +              },
      +              "with_email": {
      +                "description": "Carried a hashed email.",
      +                "type": "integer"
      +              },
      +              "with_phone": {
      +                "description": "Carried a hashed phone.",
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "event",
      +              "checked",
      +              "with_email",
      +              "with_phone"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "max_checked": {
      +          "description": "Most conversions checked in one call.",
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "max_checked",
      +        "checked",
      +        "checked_from",
      +        "events"
      +      ],
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "group_by": {
      +      "description": "Series bucket used.",
      +      "enum": [
      +        "day",
      +        "week"
      +      ],
      +      "type": "string"
      +    },
      +    "pixels": {
      +      "description": "Per pixel: `pixel_id` (integer), `name` (string), `ad_platform` (string or null), `sent` (integer), `failed` (integer, not delivered).",
      +      "items": {
      +        "additionalProperties": false,
      +        "description": "One pixel.",
      +        "properties": {
      +          "ad_platform": {
      +            "description": "Ad platform name.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "failed": {
      +            "description": "Events not delivered.",
      +            "type": "integer"
      +          },
      +          "name": {
      +            "description": "Pixel name.",
      +            "type": "string"
      +          },
      +          "pixel_id": {
      +            "description": "Pixel id.",
      +            "type": "integer"
      +          },
      +          "sent": {
      +            "description": "Events sent.",
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "pixel_id",
      +          "name",
      +          "ad_platform",
      +          "sent",
      +          "failed"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "revenue": {
      +      "additionalProperties": false,
      +      "description": "Revenue in the currency with the most valued events: `amount` (number), `currency` (string or null), `events` (integer, valued events summed).",
      +      "properties": {
      +        "amount": {
      +          "description": "Revenue amount.",
      +          "type": "number"
      +        },
      +        "currency": {
      +          "description": "Currency code.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "events": {
      +          "description": "Valued events summed.",
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "amount",
      +        "currency",
      +        "events"
      +      ],
      +      "type": "object"
      +    },
      +    "revenue_by_currency": {
      +      "description": "Same fields, one row per currency.",
      +      "items": {
      +        "additionalProperties": false,
      +        "description": "Revenue.",
      +        "properties": {
      +          "amount": {
      +            "description": "Revenue amount.",
      +            "type": "number"
      +          },
      +          "currency": {
      +            "description": "Currency code.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "events": {
      +            "description": "Valued events summed.",
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "amount",
      +          "currency",
      +          "events"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "series": {
      +      "description": "Event counts per bucket: `bucket` (string, YYYY-MM-DD of the day or week start in timezone), `event`, `count`.",
      +      "items": {
      +        "additionalProperties": false,
      +        "description": "One bucket and event.",
      +        "properties": {
      +          "bucket": {
      +            "description": "Bucket start date.",
      +            "type": "string"
      +          },
      +          "count": {
      +            "description": "Events in the bucket.",
      +            "type": "integer"
      +          },
      +          "event": {
      +            "description": "Event name.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "bucket",
      +          "event",
      +          "count"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "timezone": {
      +      "description": "IANA time zone used for dates and buckets. UTC when none was passed.",
      +      "type": "string"
      +    },
      +    "window": {
      +      "additionalProperties": false,
      +      "description": "Exact range read, after applying timezone.",
      +      "properties": {
      +        "from": {
      +          "description": "First instant included.",
      +          "format": "date-time",
      +          "type": "string"
      +        },
      +        "to": {
      +          "description": "Last instant included.",
      +          "format": "date-time",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "from",
      +        "to"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "window",
      +    "timezone",
      +    "group_by",
      +    "event_count",
      +    "event_counts",
      +    "revenue",
      +    "revenue_by_currency",
      +    "delivered",
      +    "failed",
      +    "pixels",
      +    "blocked",
      +    "field_presence",
      +    "series"
      +  ],
      +  "type": "object"
      +}
  3. Changed2 schema fields changed
    • changedInput schema / properties / from / description
      Previous value: -"Range start, ISO date"New value: +"Range start. YYYY-MM-DD is the start of that calendar day in timezone. A full ISO instant is that instant"
    • changedInput schema / properties / to / description
      Previous value: -"Range end, ISO date"New value: +"Range end. YYYY-MM-DD is the end of that calendar day in timezone, so later events that day are included. A full ISO instant is that instant"
  4. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, it discloses material behavior: ranges before the plan's analytics lookback are refused, oversized ranges fail as range_too_wide and return the largest range that fits, and hashed-email/phone coverage is computed only over the newest 500 conversions. These are exactly the caveats that change how an agent interprets results and retries.

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 scope statement is front-loaded and the metric enumeration and refusal rules follow in a logical order. The long run-on list of metrics is dense but each item earns its place; a bulleted structure would read slightly better.

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?

With an output schema present, return values need no explanation, and the description covers aggregation granularity, data-completeness caveats, and failure modes. Minor gaps remain around plan-lookback specifics and any caching/refresh behavior, but nothing essential for a correct call is missing.

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 100%, so every parameter (site_id, from, to, group_by, timezone) is already documented in the schema. The description only restates the site/date-range framing and the day-or-week bucketing; it adds no syntax, format, or edge-case detail beyond the schema. Baseline 3 applies.

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?

States a specific verb+resource ("get tracking totals for one site over a date range") and then enumerates exactly what is returned: per-event counts, revenue, delivered/failed per pixel, consent/bot-blocked events, per-day/week series, and hashed-identifier coverage of the newest 500 conversions. This clearly separates it from siblings like get_blocked_events, get_attribution, list_events, and verify_tracking.

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?

Gives concrete usage framing ("how is tracking doing" and weekly report questions) and states refusal conditions that constrain when the call will succeed. It does not, however, name a sibling alternative for narrower questions (e.g. blocked events only), leaving the agent to infer routing.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.