Skip to main content

Analytics: Dashboard Filtering

Problem Statement

Analytics dashboards let users filter data by date range, dimensions, metrics, and segments. Agents need to read filtered data programmatically without interacting with visual filter controls.

Why Human-Only Semantics Fail

  • Filter panels use date pickers, dropdowns, and multi-selects
  • Available dimensions/metrics aren't declared — they depend on the dataset
  • Dashboard state is stored in the URL query string or session, not the DOM
  • "Apply Filters" triggers a re-render, not a navigable form submission

Why Scraping Fails Here

  • Dashboard charts render as Canvas/SVG — data is not in the DOM
  • Filter state is managed in JavaScript memory
  • Real-time dashboards update via WebSocket
  • Each visualization library (D3, Chart.js, Highcharts) has different DOM output

How AXAG Eliminates Scraping

dashboard.filter declares available filter parameters, valid date ranges, and output format. Agents get structured data instead of parsing chart SVGs.

Annotated UI Example

Analytics — dashboard filter
<button
axag-intent="dashboard.filter"
axag-entity="dashboard"
axag-action-type="read"
axag-required-parameters='["dashboard_id"]'
axag-optional-parameters='["date_range","dimensions","metrics","segment_id","granularity"]'
axag-scope="tenant"
axag-risk-level="none"
axag-idempotent="true"
axag-description="Retrieve filtered dashboard data"
>Apply Filters</button>

Semantic Manifest Excerpt

Manifest — dashboard.filter
{
"intent": "dashboard.filter",
"entity": "dashboard",
"operation_id": "dashboard_filter",
"action_type": "read",
"parameters": {
"dashboard_id": { "type": "string", "required": true },
"date_range": {
"type": "object",
"required": false,
"properties": {
"start": { "type": "string", "format": "date" },
"end": { "type": "string", "format": "date" }
}
},
"dimensions": {
"type": "array",
"required": false,
"items": { "type": "string" }
},
"metrics": {
"type": "array",
"required": false,
"items": { "type": "string" }
},
"segment_id": { "type": "string", "required": false },
"granularity": {
"type": "string",
"required": false,
"enum": ["hourly","daily","weekly","monthly","quarterly","yearly"]
}
},
"scope": "tenant",
"risk_level": "none",
"idempotent": true
}

Generated Tool Example

{
"tool_name": "dashboard_filter",
"description": "Retrieve filtered dashboard data",
"input_schema": {
"type": "object",
"properties": {
"dashboard_id": { "type": "string" },
"date_range": {
"type": "object",
"properties": {
"start": { "type": "string", "format": "date" },
"end": { "type": "string", "format": "date" }
}
},
"dimensions": { "type": "array", "items": { "type": "string" } },
"metrics": { "type": "array", "items": { "type": "string" } },
"granularity": { "type": "string", "enum": ["hourly","daily","weekly","monthly","quarterly","yearly"] }
},
"required": ["dashboard_id"]
},
"safety": { "risk_level": "none", "idempotent": true }
}

Constraints & Safety Notes

  • Read-only, no side-effects
  • Scoped to tenant — users can only access their organization's dashboards
  • Available dimensions and metrics depend on the specific dashboard/dataset
  • Granularity affects data aggregation level