Skip to main content
Glama
frrazer

roblox-analytics-mcp

by frrazer

query_metrics

Query Roblox experience analytics time series for metrics like DAU, revenue, retention, and crash rate. Filter by dimensions and granularity to get bucketed data points with status flags.

Instructions

Query a time series for one analytics metric of a Roblox universe (experience): DAU, revenue, retention, playtime, crash rate, funnels, custom events, and more. Returns data points bucketed by granularity, optionally broken down by dimensions (e.g. Platform, Country) and filtered. Each data point has a UTC 'time', a numeric 'value' (or 'stringValues' for text metrics), and may carry a 'status' of Valid, Projected, or NotStatisticallySignificant. Slow queries are polled automatically; if the response has done: false, call get_operation with its 'path'. Requires an API key with the universe.analytics:read scope.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMax number of breakdown series to return. Only applies with granularity None.
filterNoRestrict results to rows matching every filter. The dimension must be supported by the metric. Use list_dimension_values to discover valid values.
metricYesMetric name, case-sensitive, e.g. DailyActiveUsers, DailyRevenue, ForwardD1Retention, ClientCrashRate15m. Call list_metrics to see all names, their supported granularities, and their supported dimensions.
endTimeYesRange end, exclusive, RFC 3339 UTC, e.g. 2026-02-01T00:00:00Z.
breakdownNoDimensions to group by, e.g. ['Platform'] or ['Country', 'AgeGroupV2']. Each series in the response carries its 'breakdowns' values. Must be supported by the metric.
startTimeYesRange start, inclusive, RFC 3339 UTC, e.g. 2026-01-01T00:00:00Z.
universeIdYesThe Roblox universe (experience) ID. Found on the Creator Dashboard overview page.
granularityYesBucket size. OneDay works for all metrics; OneWeek/OneMonth/None for most engagement, monetization and acquisition metrics; OneMinute/HalfHour/OneHour for performance metrics. None gives one data point for the entire range.
pollTimeoutSecondsNoHow long to wait for a slow query before returning the pending operation (default 60). If the result comes back with done: false, pass its 'path' to get_operation later.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations present, the description carries the full burden and does so thoroughly. It discloses async polling behavior, the done:false protocol, the shape of returned data points, possible status values, and the required API scope. This is far beyond a minimal description and gives the agent reliable expectations for behavior.

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

Conciseness5/5

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

The description is a compact four-sentence paragraph with no filler. It front-loads the core purpose, then covers return shape, async behavior, and authentication requirements in logical order. Every sentence contributes meaningful information.

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

Completeness5/5

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

Given the tool's complexity—9 parameters, no output schema, and no annotations—the description is remarkably complete. It explains what the response contains, how slow operations work, how to recover a pending operation, and what permission is required. There is little an agent would need to infer or discover elsewhere.

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?

The input schema already provides 100% parameter coverage with detailed descriptions for every field, so the baseline is 3. The description adds high-level context about bucketing, breakdowns, and filtering, but it mostly restates what the schema documents rather than adding new parameter-level semantics.

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 states a specific verb and resource: 'Query a time series for one analytics metric of a Roblox universe.' It lists concrete metric examples and differentiates itself from siblings like list_metrics, list_dimension_values, and get_operation by focusing on actual data retrieval and even explaining when to delegate to get_operation.

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 clearly establishes when to use the tool: any time you need metric time-series data for a universe. It also provides an explicit routing rule for slow queries ('if the response has done: false, call get_operation'), but it does not explicitly state when to prefer list_metrics or list_dimension_values over this tool, though the schema does mention them.

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