roblox-analytics-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@roblox-analytics-mcpHow is my game's retention this week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
roblox-analytics-mcp
A local MCP server that gives an AI agent read access to your Roblox experience analytics through the Open Cloud Analytics Query API.
It exposes all 168 metrics the API supports across 16 categories — retention, engagement, monetization, acquisition, performance, economy, funnels, custom events, thumbnails, matchmaking, data stores, safety, and ads — plus a layer of analysis tools that turn "how is my game doing?" into a single call.
Why not just call the API directly
The raw API is awkward to drive:
Metric names, granularities, and dimensions are case-sensitive, undiscoverable at runtime, and every invalid combination returns the same opaque
400 / 2001.You get 30 queries per minute per account, so a wasted call is expensive.
Large queries return
202and a path you have to poll.Buckets with no activity are omitted rather than returned as zero, so gaps are ambiguous.
Funnel steps and product IDs must be discovered before they can be filtered on.
This server handles all of that: it validates requests against a bundled catalog before spending a query, paces itself under the rate limit, follows long-running operations to completion, reports missing buckets explicitly instead of inventing zeros, and does the two-stage funnel lookup for you.
Related MCP server: Roblox Executor MCP
Setup
npm install
npm run build
npm link # optional, puts `roblox-analytics-mcp` on your PATHCreate an API key at the Creator Dashboard:
Add each experience you want to query under Access Permissions.
Grant the
universe.analytics:readoperation under theuniverse-analyticssystem.
Then store it:
roblox-analytics-mcp setup # prompts for the key and an optional default universe
roblox-analytics-mcp test # runs a live DAU query to confirm it worksA stored key takes precedence over the ROBLOX_API_KEY environment variable.
Register with Claude Code
claude mcp add roblox-analytics -- node /absolute/path/to/AnalyticsMcp/dist/cli.jsTools
Discovering what is queryable
Tool | Purpose |
| Browse all 168 metrics; filter by search, category, supported dimension, or granularity. |
| Full definition: granularities, retention window, every valid dimension. |
| All 69 dimensions and which metrics support each. |
| The actual countries, product IDs, funnel names, or place versions in your data. |
Reading data
Tool | Purpose |
| One metric as a time series, with summary stats, outliers, and coverage. |
| Several metrics over the same range, paced under the rate limit. |
| Escape hatch for an operation that timed out. |
Analysis
Tool | Purpose |
| 17 headline KPIs vs the previous period, with sharp movers flagged. |
| A themed pack — monetization, performance, acquisition, economy, safety, ads… |
| One metric sliced by every dimension it supports, ranked. |
| Two arbitrary windows, per-series absolute and percent change. |
| Discovers funnels and step IDs, then reports churn and completion per step. |
Context
Tool | Purpose |
| Experience metadata plus public stats (likes, favourites, live CCU). |
| Up to 50 universes at once. No API key — works for competitors too. |
| Who the API key belongs to, what it can read, and the owner's groups. |
| Universe IDs by name or creator — own account and all groups. |
| Place metadata, for when performance metrics point at a place ID. |
| Store a default universe and an optional alias. |
| Key source, default universe, cache state, catalog size, rate limits. |
Identity: how the server knows whose games these are
Open Cloud API keys are anonymous to the endpoints they call — no analytics response reveals the caller, and no additional key permission changes that. The server resolves identity through a separate endpoint instead:
POST https://apis.roblox.com/api-keys/v1/introspect { "apiKey": "..." }The key travels in the body, and the call needs no scope of its own — any
valid key can introspect itself. It returns authorizedUserId, the key's
scopes, whether it is enabled and unexpired, and which universes it covers
(* meaning every experience the owner can access).
That user ID unlocks the rest through public endpoints: the owner's username, their personal experiences, and every group they belong to. Group scanning matters — studio titles usually live under a group the developer merely belongs to, so a personal-account-only lookup misses the real games entirely.
whoami → who owns this key, what can it read
find_universes { search: "party" } → ranked matches across account + groupsGroup listings are cached for 6 hours (ROBLOX_ANALYTICS_CACHE_TTL_MINUTES to
change, refresh: true to bypass). A cold scan of 40 groups takes about a
minute; warm lookups are instant. Caching is per owner, so a group listing
that gets rate-limited is the only thing retried next time.
Any source that could not be read is reported in errors rather than dropped —
an empty result with errors present means the scan was throttled, not that the
creator has no games. Those two states look identical otherwise, and conflating
them produces confidently wrong answers.
Things worth knowing
Aggregation is reported, not assumed. Summing daily active users across a
month does not give you monthly actives — it double-counts anyone who played
twice. Where the API supports it, period totals come from a single whole-range
query (aggregation: "api-period-total"); where it does not, the fallback is
labelled mean-of-buckets or sum-of-buckets so the number is never anonymous.
sum is not always meaningful. Every result carries an aggregationHint.
For rates, averages, and percentiles (ForwardD1Retention, ClientFpsP90,
PayingUsersCVR) it reads average-only — the sum field is arithmetic, not
information.
Gaps are not zeros. The API omits buckets with no activity. Results report a
missingBuckets list rather than filling in zeros that would drag averages down.
Time is UTC. endTime is exclusive and defaults to today's UTC midnight, so
you get only complete buckets. Pass endTime: "now" to include the partial
current day. Ranges accept RFC 3339, plain dates, or relative shorthand
(-30d, -12w, -6mo, today, yesterday), or use lastDays.
Retention windows differ. Standard metrics keep 4 years; performance and stability metrics keep only 28 days. Queries beyond the window are rejected locally with the earliest queryable timestamp.
Beta API. The Analytics Query API is in beta and its schema may change. The
metric catalog is generated from the official docs — refresh it with
npm run generate:catalog if Roblox adds metrics.
Development
npm run build # compile TypeScript
npm test # 6 suites: time, validation, query pipeline, reports, packs, MCP protocol
npm run generate:catalog # regenerate src/catalog.ts from the Roblox docsTests mock fetch for the API-facing suites, so only the MCP protocol suite
touches the network (public endpoints, no key needed).
License
MIT
Available Tools
19 toolsanalyze_funnelA
Resolve an experience's funnels end to end: discover which funnels exist, discover their step IDs, then pull users, overall completion, step-to-step completion, and churn for every step — ordered, with the biggest drop-off called out.
Funnel step IDs are defined by your own AnalyticsService:LogFunnelStepEvent calls rather than by Roblox, so they must be discovered before they can be queried; this handles that two-stage lookup for you. Omit funnelName to report on every funnel found.
Steps only appear for days a player actually reached them, so use a generous range (90 days is a safe default) or late steps will look absent rather than unreached.
| Name | Required | Description | Default |
|---|---|---|---|
| endTime | No | Exclusive end. Defaults to today's UTC midnight so only complete buckets are returned — pass 'now' if you want the partial current day included. | |
| lastDays | No | Shorthand for the last N complete UTC days. Cannot be combined with startTime. | |
| breakdown | No | Extra dimensions to split each step by, e.g. ['Platform']. | |
| startTime | No | Inclusive start. RFC 3339 (2026-01-01T00:00:00Z), a date (2026-01-01), or relative (-30d, -12w, -6mo, -2y, -48h, today, yesterday). | |
| funnelName | No | Restrict to one funnel. Omit to cover all of them. | |
| universeId | No | Roblox universe (experience) ID, or a saved alias. Optional when a default universe is configured — use get_server_status to check, or find_universes to look one up. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes on the transparency burden. It discloses the two-stage lookup behavior, the dependency on user-defined step IDs, and the data sparsity issue (steps only appear on days players reached them), which are important behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear paragraphs, but contains some redundancy (e.g., repeating 'discover'). It is appropriately sized for the tool's complexity without being excessively lengthy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the full workflow, data nuances, and usage tips, giving a complete picture for a complex multi-step tool. It does not specify exact output format, but that is not required given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides detailed descriptions for all parameters, so the baseline is high. The description enriches understanding of time parameters by explaining why a generous range is needed, which adds meaningful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: it resolves funnels end-to-end, discovering funnels and steps, then pulling metrics and highlighting the biggest drop-off. This distinguishes it from lower-level sibling tools like query_metric by offering a composite analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides practical usage guidance, such as the need for a generous time range and the ability to omit funnelName for all funnels. However, it does not explicitly contrast with alternative tools when a simpler metric query would suffice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
breakdown_metric_by_segmentsA
Slice one metric by every dimension it supports — platform, country, age group, new vs returning, payer status, device, locale, place version, and so on — in a single call, ranked within each dimension.
This is the fastest way to answer 'who is this bad for?'. A crash rate or retention figure that looks acceptable overall is often far worse on one platform or in one country, and this surfaces that without guessing which dimension to try. For rate-like metrics it flags segments running at least 1.5x or at most 0.67x the overall value.
Costs one query per dimension, so restrict dimensions if you only care about a few.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Narrow results to specific dimension values. | |
| metric | Yes | Exact, case-sensitive metric name. | |
| endTime | No | Exclusive end. Defaults to today's UTC midnight so only complete buckets are returned — pass 'now' if you want the partial current day included. | |
| lastDays | No | Shorthand for the last N complete UTC days. Cannot be combined with startTime. | |
| startTime | No | Inclusive start. RFC 3339 (2026-01-01T00:00:00Z), a date (2026-01-01), or relative (-30d, -12w, -6mo, -2y, -48h, today, yesterday). | |
| dimensions | No | Dimensions to slice by. Defaults to every dimension the metric supports. | |
| universeId | No | Roblox universe (experience) ID, or a saved alias. Optional when a default universe is configured — use get_server_status to check, or find_universes to look one up. | |
| limitPerDimension | No | Cap segments per dimension, ranked by value. Useful for Country and ProductKey. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It clearly states that the tool performs a read operation, returns ranked segments per dimension, flags rate-like metrics at certain thresholds (1.5x/0.67x), and costs one query per dimension. It also discloses that endTime defaults to today's UTC midnight for complete buckets, which is beyond schema info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: the first sentence states the core purpose, the second provides a use case, and the last adds cost guidance. No fluff, every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, nested filter objects) and lack of output schema, the description provides comprehensive context: it explains the main use case, performance considerations, and how parameters like dimensions and limitPerDimension behave. It also points to sibling tools for discovering dimension values. This is complete enough for an agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds crucial semantic context: it explains that dimensions defaults to all supported dimensions, that limitPerDimension helps cap segments for high-cardinality fields like Country and ProductKey, and that filter values can be discovered via list_dimension_values. This goes beyond basic schema descriptions to explain how parameters interact and when to use them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Slice one metric by every dimension it supports'), the resource (metric by dimensions), and the outcome (ranked segments within each dimension). It also differentiates from siblings like query_metric and query_metrics by emphasizing the multi-dimension, per-dimension ranking approach.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('This is the fastest way to answer 'who is this bad for?') and contrasts it with alternatives like query_metric/query_metrics by highlighting that it surfaces segment issues without guessing dimensions. It also provides cost guidance ('Costs one query per dimension') and advises restricting dimensions to save resources.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_periodsA
Compare metrics between two time ranges, with absolute and percent change per series. Use it to measure the effect of an update, an event, or a marketing push: set current to the window after the change and leave baseline empty to compare against the equal-length window immediately before it, or set baseline explicitly to compare against, say, the same week last year.
With a breakdown, series are matched by label so you can see which platform or country actually moved.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Narrow results to specific dimension values. | |
| metrics | Yes | Exact, case-sensitive metric names. | |
| breakdown | No | Dimensions to split both periods by. | |
| universeId | No | Roblox universe (experience) ID, or a saved alias. Optional when a default universe is configured — use get_server_status to check, or find_universes to look one up. | |
| currentEndTime | No | End of the period of interest. | |
| baselineEndTime | No | End of the comparison period. | |
| currentLastDays | No | Or: the last N complete days. | |
| baselineLastDays | No | Or: N days for the baseline window. | |
| currentStartTime | No | Start of the period of interest. | |
| baselineStartTime | No | Start of the comparison period. Omit to use the window immediately before current. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the core behavior (comparing periods, calculating absolute and percent change), explains the implicit baseline behavior (omitting baseline uses the prior window), and describes how series are matched with a breakdown. While it doesn't detail edge cases like overlapping periods or resolution, it provides enough transparency for a read-style analytics operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise paragraphs. The first front-loads the purpose and core usage, including the key interaction between current and baseline. The second adds one clarifying detail about breakdowns. No filler or redundant information, making it exceptionally efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description effectively covers the tool's purpose, usage patterns, and key parameter semantics. Even though there is no output schema, the description implies the return structure ('absolute and percent change per series', 'which platform or country actually moved') which adequately hints at the output. Minor omissions like pagination or limit behaviors are acceptable for this analytics context, but it could still be slightly more explicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining the interplay between current/baseline time parameters, the rule for 'baselineStartTime' omission, and how breakdown series are matched by label. These contextual hints help the agent correctly populate parameters, raising the score to 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares metrics between two time ranges and reports absolute and percent change per series. It identifies a specific use case (measuring effects of updates/events/marketing) and distinguishes itself from sibling metrics tools by emphasizing the comparative analysis aspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs when to use the tool (to measure changes) and explains how to set the current and baseline periods, including the rule for omitting the baseline to use the immediately preceding equal-length window. It also briefly explains breakdown matching. However, it does not name alternative tools or state explicit when-not-to-use cases, so slightly less than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_metricA
Full definition of one or more metrics: display label, category, every granularity the API accepts, how many days of history are retained, and every dimension valid in breakdown or filter. Check this before querying an unfamiliar metric — an unsupported granularity or dimension returns an opaque 400 and burns query budget.
| Name | Required | Description | Default |
|---|---|---|---|
| metrics | Yes | Exact, case-sensitive metric names, e.g. ['DailyActiveUsers']. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavior itself. It mentions that unsupported inputs cause an opaque 400 and burn query budget—useful behavioral insight. It doesn't explicitly state it's read-only, but that's implied by 'full definition' and the absence of mutation language. It could add details about response shape, but it's adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each earning its place: the first defines the tool's purpose and output details; the second provides actionable usage guidance. No redundancy, clearly structured, and front-loaded with the core definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, no-output-schema metadata tool, the description covers what the tool does, what it returns, when to use it, and the risk of misuse. It lacks an explicit output schema description, but given the tool's nature, the description is sufficient and thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes the 'metrics' parameter ('Exact, case-sensitive metric names, e.g. ['DailyActiveUsers']'). The description adds context about usage ('one or more metrics') but not new parameter semantics beyond what the schema provides. Since schema coverage is 100%, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('describe') and clearly states the resource ('one or more metrics') and what it returns: display label, category, granularities, retention days, and valid dimensions. This distinctly differentiates it from siblings like list_metrics (which likely lists names only) and query_metric (which returns data).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to 'Check this before querying an unfamiliar metric' and warns of consequences (opaque 400 error and waste of query budget) for using unsupported granularity/dimension. This gives a clear when-to-use directive and implies when not to use (when you already know the metric details).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_universesA
Find universe IDs for experiences, by name or by creator.
With no arguments it identifies the API key's owner automatically and returns every experience on their account plus every experience in all of their groups — which is where studio titles usually live, so a personal-account-only search will often miss the game you want. Add search to filter by name; results are ranked by lifetime visits, so the real title outranks similarly-named test places.
Pass username, userId, or groupId to target someone else instead.
Scanning many groups takes several requests. Any source that could not be read is reported in errors rather than silently omitted — an empty result with errors present means the scan was throttled, not that the creator has no games.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max experiences returned. Default 200. | |
| search | No | Case-insensitive substring match on the experience name, e.g. 'party'. | |
| userId | No | Target a specific numeric user ID. | |
| groupId | No | Target a single group's experiences only. | |
| refresh | No | Re-fetch instead of using the cached game lists. Results are cached for 6 hours; use this after publishing a new experience. | |
| username | No | Target a specific Roblox username. | |
| includeGroupGames | No | Scan the user's groups as well as their own account. Default true. Turn off for a faster, personal-account-only lookup. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains that scanning many groups takes multiple requests, how throttling manifests (empty result with errors), and that errors are reported rather than silently omitted. It also discloses that results are cached for 6 hours and that default behavior includes group games, which helps set expectations for network load and freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear paragraphs and front-loaded primary purpose. It uses concise, informative sentences. The only minor room for improvement is that the third paragraph about errors and throttling is somewhat technical but is appropriately placed at the end, and the description is detailed enough to warrant its length for the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (7 parameters, no output schema), the description is remarkably complete. It explains the default behavior, the implications of omitting arguments (who the key belongs to), the impact of includeGroupGames (speed vs coverage), and how to interpret results (errors field indicates throttling). The lack of an output schema is compensated by describing that errors are reported and empty results with errors indicate throttling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers all parameters with descriptions (100% coverage), so the bar is lower. The description adds value by explaining the default behavior when parameters are omitted (e.g., includeGroupGames defaults true, search is optional but ranking is by lifetime visits), and the refresh parameter's purpose (re-fetch after publishing). It does not repeat parameter definitions but contextualizes them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds universe IDs for experiences by name or creator. It specifies the primary use case and distinguishes it from sibling tools like get_universe_info and get_place_info, which likely focus on individual universe/place details rather than discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use with no arguments (identifies API key owner's account and groups), when to add 'search' (filter by name, with ranking insight), and how to target specific users or groups via username/userId/groupId. It also explains the includeGroupGames parameter for tuning scope, and clarifies that a personal-account-only search might miss studio titles, recommending the default behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_analytics_operationA
Fetch the result of a long-running analytics operation by its path. Queries normally poll themselves to completion; this is the escape hatch for one that timed out, using the path reported in the timeout message.
| Name | Required | Description | Default |
|---|---|---|---|
| operationPath | Yes | Operation path from a prior response, e.g. 'v1/universes/123/operations/metrics/abc'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are available, so the description carries the burden. It discloses that it's an 'escape hatch' for timed-out operations and that normal queries poll themselves, giving good context. It could add details about error handling or idempotence, but the provided context is sufficient for most use cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with all information front-loaded. Every word adds value, and the distinction from normal flow is crystal clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description fully covers its purpose, usage context, and relation to the broader API. No significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter is well-documented in the schema with an example, providing 100% coverage. The description adds context about where the path comes from but doesn't add additional parameter-level semantics beyond that. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches the result of a long-running analytics operation by path, using a specific verb and resource. It distinguishes itself from siblings by framing it as the escape hatch for timed-out queries, which is unique among the listed tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly explains when to use this tool: when queries time out and the path is provided in the timeout message. This provides clear usage context and differentiates from the normal polling behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_experience_overviewA
One-call health check for an experience. Pulls the headline KPIs — DAU, MAU, stickiness, visits, peak CCU, session length, playtime, D1/D7/D30 retention, revenue, ARPU, ARPPU, paying users and conversion — for a period, compares each against the immediately preceding period of equal length, and flags the ones that moved sharply.
Start here when asked how a game is doing, then drill in with breakdown_metric_by_segments or get_metric_report.
Each KPI reports how it was aggregated: api-period-total values come from a whole-period query, so user counts are distinct users rather than summed daily figures. This issues roughly two queries per metric against a 30-per-minute budget, so a full comparison run takes about a minute.
| Name | Required | Description | Default |
|---|---|---|---|
| endTime | No | Exclusive end. Defaults to today's UTC midnight so only complete buckets are returned — pass 'now' if you want the partial current day included. | |
| metrics | No | Override the KPI set. Defaults to: DailyActiveUsers, MonthlyActiveUsers, DauMauStickiness, UniqueUsersWithPlaySessions, Visits, PeakConcurrentPlayers, AverageSessionLengthMinutes, AveragePlayTimeMinutesPerDAU, TotalPlayTimeHours, ForwardD1Retention, ForwardD7Retention, ForwardD30Retention, DailyRevenue, AverageRevenuePerUser, AverageRevenuePerPayingUser, PayingUsers, PayingUsersCVR. | |
| lastDays | No | Shorthand for the last N complete UTC days. Cannot be combined with startTime. | |
| startTime | No | Inclusive start. RFC 3339 (2026-01-01T00:00:00Z), a date (2026-01-01), or relative (-30d, -12w, -6mo, -2y, -48h, today, yesterday). | |
| universeId | No | Roblox universe (experience) ID, or a saved alias. Optional when a default universe is configured — use get_server_status to check, or find_universes to look one up. | |
| includeDailySeries | No | Also return the daily time series per KPI. Adds one query per metric. | |
| compareToPreviousPeriod | No | Compare against the preceding equal-length window. Default true. Doubles query count. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description supplies the behavioral burden. It discloses query-cost behavior ('roughly two queries per metric... 30-per-minute budget... about a minute') and aggregation nuance ('api-period-total values... distinct users rather than summed daily figures').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact paragraphs, front-loaded with a clear one-sentence summary. Sentences on aggregation and query budget are essential context, not filler. Slightly longer than a minimal description but every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite complexity (7 params, no output schema, no annotations), the description covers purpose, usage, behavioral traits, and cost implications. It doesn't detail exact return structure, but the KPI list and flag behavior give enough for an agent to know what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all 7 parameters with detailed descriptions, so the baseline is 3. The description adds global context (query budget, defaults) but does not elaborate any parameter beyond what the schema already documents, such as the metrics override list and compare flag.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'One-call health check for an experience' with specific verbs (pulls, compares, flags) and resource. It distinguishes from siblings by instructing 'Start here... then drill in with breakdown_metric_by_segments or get_metric_report.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance: 'Start here when asked how a game is doing' and points to alternatives for deeper analysis. It also frames the tool as the initial high-level overview, clearly separating it from drill-down tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_metric_reportA
Query a themed group of related metrics in one call. Packs: • retention: ForwardD1Retention, ForwardD7Retention, ForwardD30Retention, DailyCohortRetention, WeeklyCohortRetention, DauMauStickiness • engagement: DailyActiveUsers, MonthlyActiveUsers, AverageSessionLengthMinutes, AveragePlayTimeMinutesPerDAU, TotalPlayTimeHours, PeakConcurrentPlayers, Visits, SessionDurationSecondsP50, SessionDurationSecondsP90, TotalSessionsEndedInBucket • monetization: DailyRevenue, AverageRevenuePerUser, AverageRevenuePerPayingUser, PayingUsers, PayingUsersCVR, ItemMonetizationRevenue • acquisition: UniqueUsersWithImpressions, UniqueUsersWithClicks, UniqueUsersWithPlaySessions, QualifiedUniqueUsersWithPlaySessions, ImpressionCVR, ClickCVR, EndToEndCVR, QualifiedEndToEndCVR, RFYPlayThroughRate, RFYQualifiedPTR, RFYDeepEngagementRate • performance: ClientCrashRate15m, ClientCrashCount, ServerCrashCount, OomUnexpectedExits, ClientFpsP50, ClientFpsP10, ServerFrameRateP50, ClientMemoryUsageP90, ClientMemoryUsagePercentageP90, MemoryUsageP90, CpuTimeP90, ClientCpuTimeAvg, CpuCoreUtilization • economy: EconomyTransactionAmount, EconomyTransactionCount, EconomyAverageWalletBalance • thumbnails: ThumbnailImpressions, ThumbnailQualifiedPlays, ThumbnailQualifiedPTR, ThumbnailL7QualifiedPTR, ThumbnailAverageSessionLengthMinutes • safety: TotalAbuseReports, UniqueAbuseReportSubmittersPer1000PlaytimeHours • ads: AdsPublisherReportingTotalImpressions, AdsPublisherReportingTotalRevenueRobux, AdsPublisherReportingVideo2DImpressions, AdsPublisherReportingVideo2DRevenueRobux, AdsPublisherReportingVideo2DDailyUniqueViewer, AdsPublisherReportingVideo2DEpmNoUnvalidatedPc • infrastructure: DataStoreRequests, DataStoreStorageUsageBytes, DataStoreReadRequests, DataStoreWriteRequests, DataStoreRequestsByStatus, MemoryStoreRequests, MemoryStoreMemoryUsageBytes • customEvents: CustomEventCount, CustomEventCountUser, CustomEventSumValue, CustomEventAvgValue, CustomEventAvgPerUserValue
Use this when a question is about an area rather than a single number — 'how is monetization doing', 'is performance regressing', 'where is acquisition leaking'. Optionally break every metric down by a dimension and compare against the preceding period. Metrics the experience has no data for come back with an error field rather than failing the report.
Note the performance pack only retains 28 days of history.
| Name | Required | Description | Default |
|---|---|---|---|
| pack | Yes | Which themed group to query. | |
| filter | No | Narrow results to specific dimension values. | |
| endTime | No | Exclusive end. Defaults to today's UTC midnight so only complete buckets are returned — pass 'now' if you want the partial current day included. | |
| lastDays | No | Shorthand for the last N complete UTC days. Cannot be combined with startTime. | |
| breakdown | No | Dimensions to split by. Silently skipped for metrics that do not support them. | |
| startTime | No | Inclusive start. RFC 3339 (2026-01-01T00:00:00Z), a date (2026-01-01), or relative (-30d, -12w, -6mo, -2y, -48h, today, yesterday). | |
| universeId | No | Roblox universe (experience) ID, or a saved alias. Optional when a default universe is configured — use get_server_status to check, or find_universes to look one up. | |
| granularity | No | Time bucket size. OneDay suits most metrics; OneMinute/HalfHour/OneHour are for performance metrics; None returns a single aggregate for the whole range (the correct way to get distinct users or total revenue for a period). | |
| includeDataPoints | No | Include raw per-bucket values. Default false. | |
| compareToPreviousPeriod | No | Add per-metric KPI deltas vs the preceding window. Doubles query count. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It discloses two behavioral traits: metrics with no data return an error field instead of failing the report, and the performance pack only retains 28 days of history. These are useful but not comprehensive; it does not mention auth, rate limits, or other edge cases. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat long due to the extensive metric lists, but it is well-structured with bullet points for each pack, making it easy to scan. The core purpose and usage guidelines are front-loaded. Every sentence contributes: the purpose, the pack list, the use case, and the retention note. It is appropriately concise for the information it must convey.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters) and the presence of a complete schema, the description focuses on the high-level concept of packs, usage guidance, and key behavioral notes. It does not detail every parameter's behavior (e.g., filter semantics) but those are in the schema. The absence of an output schema is acceptable as the tool likely returns straightforward results. The description covers enough for an agent to decide when to use it and what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds substantial semantic value for the 'pack' parameter by enumerating all metrics in each pack, which is essential for correct selection. It also adds context about the tool's purpose. Other parameters are adequately described in the schema, so the description meaningfully supplements the pack parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Query a themed group of related metrics in one call.' It lists the available packs and even distinguishes its scope from single-number queries by including 'Use this when a question is about an area rather than a single number.' This differentiates it from sibling tools like query_metric or query_metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use ('Use this when a question is about an area rather than a single number') and provides concrete examples. It does not explicitly name alternative tools or state 'when not to use,' but the guidance is clear enough that an agent could infer the appropriate context. It also mentions optional breakdown and comparison features.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_place_infoA
Open Cloud metadata for one place within a universe: name, description, server size, and current server fill behaviour. Useful when performance metrics broken down by Place point at a specific place ID you need to identify.
| Name | Required | Description | Default |
|---|---|---|---|
| placeId | Yes | The place ID. | |
| universeId | No | Roblox universe (experience) ID, or a saved alias. Optional when a default universe is configured — use get_server_status to check, or find_universes to look one up. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden of disclosing behavior. It implies a read-only metadata lookup by saying 'metadata' and listing returned fields, but it does not explicitly state that no data is modified, nor does it mention authentication, rate limits, or error behavior. This is adequate for a simple read tool but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The first sentence states the resource and returned fields, and the second gives a practical usage context. Every sentence earns its place and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter metadata lookup with no output schema, the description adequately names the key returned data fields and the intended use case. It does not explain return formatting or edge cases, but the scope is small enough that the description is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already explains placeId and universeId well. The tool description adds no parameter-specific meaning beyond the schema's own descriptions; it only names output fields rather than clarifying the input parameters. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as retrieving Open Cloud metadata for a specific place within a universe, listing exact fields returned (name, description, server size, server fill behaviour). It distinguishes itself from sibling tools like get_universe_info and get_server_status by scoping to a single place rather than a universe or status endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a concrete use case: use it when performance metrics broken down by Place point to a specific place ID that needs identification. It does not explicitly mention when not to use it or name alternatives, but the context is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_public_game_statsA
Public storefront stats for up to 50 universes at once: live player count, lifetime visits, favourites, like/dislike ratio, genre, server size, and last-update date. No API key needed, so this works for any public experience.
Use it to benchmark against competitors, or to size up several of your own experiences before deciding which to analyse in depth.
| Name | Required | Description | Default |
|---|---|---|---|
| universeIds | Yes | Universe IDs to look up. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It discloses that no API key is needed, that it only works for public experiences, and that results include live/lifetime stats. It could add edge-case behavior such as invalid or private universe IDs, but the access model is well communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: first sentence states what it does, second adds context, final sentence gives use cases. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned stats fields (player count, visits, favourites, ratio, genre, server size, last update). It also covers access requirements and use cases. It stops short of error handling, rate limits, or partial-failure behavior, but the tool is simple and the description is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds the 'up to 50 at once' batch context, but that mostly mirrors the schema's maxItems. It does not explain universe ID formats or how to obtain them, though the parameter is simple enough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly names the resource ('public storefront stats') and the action ('get'), and enumerates specific output fields. It also differentiates from sibling tools by emphasizing batch lookup of up to 50 universes and public accessibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear intended use cases: benchmarking competitors or shortlisting your own experiences for deeper analysis. It does not explicitly name alternative tools to avoid, but the context around public, no-key, batch stats makes when-to-use reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_server_statusA
Check how this MCP server is configured: whether an API key is available and where it came from, the default universe, saved aliases, and the query budget. Call this first if an analytics tool returns an authentication error — it distinguishes a missing key from a key that lacks the analytics scope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. The verb 'Check' plus the enumerated read-only configuration fields strongly imply a non-mutating diagnostic operation. It does not explicitly state the output format or whether it makes any external calls, but for a simple status tool the behavioral intent is clear enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, and every sentence adds value: the first defines scope, the second provides actionable diagnostic usage guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no output schema, and a clearly bounded diagnostic purpose, the description is complete. It covers what is checked, when to use it, and why, which is sufficient for an AI agent to select and invoke the tool appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is 100%, so the baseline is 4. The description appropriately describes the output fields rather than parameters, making clear what the status check will reveal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Check') and resource ('how this MCP server is configured'), then enumerates the exact configuration aspects covered: API key availability/provenance, default universe, saved aliases, and query budget. This clearly distinguishes it from sibling analytics and universe tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit when-to-use directive: 'Call this first if an analytics tool returns an authentication error', and explains why it is useful ('distinguishes a missing key from a key that lacks the analytics scope'). This is strong, actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_universe_infoA
Metadata and public storefront stats for an experience: name, description, creator, creation and last-update dates, root place, live player count, lifetime visits, favourites, and the like/dislike ratio.
The like ratio, favourite count, and lifetime visits are not available through the Analytics Query API at all, so this complements the metric tools — a retention problem alongside a falling like ratio reads very differently from one without.
Public stats need no API key and work for experiences you do not own, which makes this usable for competitor comparison. The Open Cloud metadata portion needs a key with universe read access and is reported as an error if the key is analytics-only.
| Name | Required | Description | Default |
|---|---|---|---|
| universeId | No | Roblox universe (experience) ID, or a saved alias. Optional when a default universe is configured — use get_server_status to check, or find_universes to look one up. | |
| includeOpenCloudMetadata | No | Also fetch Open Cloud universe metadata. Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool can return an error if the key is analytics-only, and clarifies which parts require different permissions. It does not describe potential side effects (likely read-only) or rate limits, but given the read-only nature implied, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is fairly concise, covering purpose, data points, use cases, and permission requirements in two paragraphs. It front-loads the core purpose and lists key stats, then adds contextual details. Minor redundancy (like repeating the like ratio mention) but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (two params, no nested output schema, no annotations), the description is quite complete. It covers what data is returned, permission nuances, and typical use cases like competitor comparison. The absence of an output schema is compensated by listing the data points explicitly, and the error case is disclosed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already has 100% description coverage for both parameters, so the description doesn't need to reiterate. However, it adds context that universeId can be an alias and optional when a default is set, and includeOpenCloudMetadata controls fetching additional metadata, which aligns with the description's mention of Open Cloud metadata. This slightly exceeds the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches metadata and public storefront stats for an experience, listing specific data points like name, description, creator, dates, player count, visits, and like/dislike ratio. It also explicitly contrasts with the Analytics Query API, distinguishing it from sibling metric tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: public stats need no API key and work for unowned experiences (useful for competitor comparison), while Open Cloud metadata requires a key with universe read access. It also indicates when to use this tool over others (e.g., complements metric tools for retention analysis) and mentions alternatives like find_universes for ID lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dimensionsA
List the 69 dimensions available for breakdowns and filters, each with the metrics that support it. Use this to answer 'what can I slice this by' or, in reverse, 'which metrics can I break down by Country'. Dimension values (the actual countries, product IDs, funnel steps) come from list_dimension_values.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Case-insensitive substring match on the dimension name. | |
| includeMetrics | No | Include the list of metric names supporting each dimension. Verbose. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the output (list of dimensions and metrics) and clarifies that actual dimension values are elsewhere, setting accurate expectations. It doesn't mention read-only nature or pagination, but these are minor for a simple lookup tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler. It front-loads the core purpose, adds usage examples, and explicitly redirects to the sibling tool. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with optional parameters and no output schema, the description covers purpose, use cases, parameter implications through context, and points to the related tool for values. It is complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both parameters have descriptions), so the baseline is 3. The description adds context on how the tool is used but doesn't supplement the parameter meanings beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists 69 dimensions and the metrics supporting each, which is specific and actionable. It explicitly distinguishes itself from list_dimension_values by noting that dimension values come from that sibling tool, preventing confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit use cases ('what can I slice this by' and 'which metrics can I break down by Country') and explicitly tells users when not to use it ('Dimension *values* come from list_dimension_values'), giving clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dimension_valuesA
List the actual values a dimension took over a date range — the countries, product IDs, funnel names, funnel step IDs, custom event names, or place versions present in your data. Run this before filtering: filters match raw values exactly, and guessing them wastes queries.
Values only appear for periods with activity, so widen the range if something you expect is missing. The metric argument selects which namespace of dimensions to resolve against; it does not compute the metric.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max values per dimension, ranked by metric value. Needs granularity omitted or 'None'. | |
| filter | No | Narrow results to specific dimension values. | |
| metric | Yes | Metric providing dimension context, e.g. 'DailyActiveUsers' for Country. | |
| endTime | No | Exclusive end. Defaults to today's UTC midnight so only complete buckets are returned — pass 'now' if you want the partial current day included. | |
| lastDays | No | Shorthand for the last N complete UTC days. Cannot be combined with startTime. | |
| startTime | No | Inclusive start. RFC 3339 (2026-01-01T00:00:00Z), a date (2026-01-01), or relative (-30d, -12w, -6mo, -2y, -48h, today, yesterday). | |
| dimensions | Yes | Dimension names to resolve, e.g. ['Country']. | |
| universeId | No | Roblox universe (experience) ID, or a saved alias. Optional when a default universe is configured — use get_server_status to check, or find_universes to look one up. | |
| granularity | No | Time bucket size. OneDay suits most metrics; OneMinute/HalfHour/OneHour are for performance metrics; None returns a single aggregate for the whole range (the correct way to get distinct users or total revenue for a period). | |
| skipValidation | No | Bypass local dimension validation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that values only appear for activity periods, mentions the exclusive end default, and notes the metric argument does not compute the metric. However, it does not explicitly state whether this is a read-only operation or discuss rate limits or pagination. Given the absence of annotations, this is reasonably transparent but leaves a small gap about operation safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with a clear purpose, and uses short paragraphs for separate concerns (pre-filter usage, missing values, metric argument). Every sentence adds value without repeating schema details or annotations, achieving high information density in a compact form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, no output schema, no annotations), the description covers key behavioral defaults (endTime exclusivity, granularity None for aggregates) and usage guidance. It lacks a brief description of return value shape (e.g., a map of dimension to values), but since there's no output schema, a note on what the response contains might be expected. However, the description focuses on discovery and filtering, and the schema covers parameter semantics well, making this only slightly incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds important context beyond property descriptions: it explains the metric argument's role, the need for granularity to be omitted for limit, and the behavior of endTime. For instance, it clarifies the limit needs granularity omitted, which is not obvious from the schema. The description compensates for the schema's minimal context by tying parameters to usage patterns, even though it doesn't detail every parameter like startTime's relative formats (which the schema already covers).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists actual dimension values (countries, product IDs, etc.) over a date range, which is a specific verb plus resource. It also distinguishes itself from siblings like list_dimensions (list dimension names vs. values) and from query/breakdown tools by framing it as a pre-filter discovery step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises running this before filtering, warns that filters match exact raw values, and recommends widening the date range if expected values are missing. It also clarifies that the metric argument is for namespace selection, not computation, which prevents misuse. Sibling tools like list_dimensions are implicitly contrasted by the 'actual values' phrasing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_metricsA
Browse the 168 metrics the Roblox Analytics Query API supports, across 16 categories (Retention, Engagement, Monetization, Acquisition, Performance & Stability, Economy, Funnels, Custom Events, Thumbnails, Speech-to-Text, Text-to-Speech, Matchmaking, Data Store, Memory Stores, Safety, Advertising). Start here when you do not already know the exact metric name — names are case-sensitive and the API rejects anything it does not recognise. Filter by free-text search, category, a dimension the metric must support, or a granularity it must allow. Returns names and labels only unless includeDetails is set.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Case-insensitive substring match against metric name and display label. | |
| category | No | Restrict to one category. | |
| includeDetails | No | Include granularities, retention, and the full dimension list per metric. | |
| supportsDimension | No | Only metrics that can be broken down or filtered by this dimension. | |
| supportsGranularity | No | Only metrics that accept this bucket size. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full responsibility for transparency. It discloses that the API rejects unrecognized names (case-sensitive), and that the output includes names and labels only unless includeDetails is set. This gives agents a clear picture of behavior and error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using four sentences that lead with the main purpose, then provide usage context and filter details. There is no redundant or extraneous information, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (listing metrics) and the presence of detailed schema parameter descriptions, the tool description is complete. It explains the output behavior (names/labels vs details) and the discovery use case, covering all essential aspects for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds context beyond the schema by explaining how filters work (free-text search, category, dimension, granularity) and mentions case-sensitivity for search. It also clarifies that includeDetails controls output richness, which is not fully explained in the schema descriptions alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool lists available metrics from the Roblox Analytics Query API, with specific mention of 168 metrics across 16 categories. It distinguishes itself as a discovery tool for when the exact metric name is unknown, which differentiates it from siblings like query_metric or describe_metric.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to 'Start here when you do not already know the exact metric name', providing clear when-to-use guidance. It also explains filtering capabilities, which helps agents decide between this and other tools that operate on known metrics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_metricA
Query one analytics metric as a time series. This is the core read tool — everything the Analytics Query API exposes is reachable through it.
Returns, per series: summary statistics (first, last, min, max, mean, median, stdDev, sum, percent change, trend per bucket), outlier buckets beyond 2.5 standard deviations, any buckets the API returned no data for, and the raw data points.
Use breakdown to split into one series per dimension value, and filter to narrow the population. The request is validated against the metric's documented capabilities before it is sent, so mistakes come back as a clear message rather than an opaque 400.
Note aggregationHint: for rates, averages, and percentiles the sum of buckets is not a meaningful number — read mean instead.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Cap on breakdown series, ranked by value. Only valid with granularity 'None' and a breakdown — the documented way to find the top N segments. | |
| filter | No | Narrow results to specific dimension values. | |
| metric | Yes | Exact, case-sensitive metric name. Use list_metrics to find one. | |
| endTime | No | Exclusive end. Defaults to today's UTC midnight so only complete buckets are returned — pass 'now' if you want the partial current day included. | |
| lastDays | No | Shorthand for the last N complete UTC days. Cannot be combined with startTime. | |
| breakdown | No | Dimensions to split by, one series per value, e.g. ['Platform']. Must be supported by the metric — see describe_metric. | |
| startTime | No | Inclusive start. RFC 3339 (2026-01-01T00:00:00Z), a date (2026-01-01), or relative (-30d, -12w, -6mo, -2y, -48h, today, yesterday). | |
| universeId | No | Roblox universe (experience) ID, or a saved alias. Optional when a default universe is configured — use get_server_status to check, or find_universes to look one up. | |
| granularity | No | Time bucket size. Defaults to OneDay, or the metric's coarsest supported option when it has no daily bucket. | |
| maxDataPoints | No | Cap on data points returned per series (most recent kept). Default 400. | |
| skipValidation | No | Send the request even if it fails local validation. Use only if you believe the API supports something the bundled catalog does not list. | |
| includeDataPoints | No | Include raw per-bucket values. Default true. Turn off for a summary-only view. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite having no annotations, the description provides unusually detailed behavior: client-side request validation, per-series summary statistics, trend and outliers, raw data points, no-data buckets, error messaging, default granularity, endTime exclusive semantics, lastDays shorthand, includeDataPoints toggle, and maxDataPoints cap, aggregation hint for rates/averages/percentiles.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-packed and dense but not bloated. It methodically describes params, returns, defaults, validation and aggregations and stays organized; each sentence pays rent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Has a high degree of richness and the API is complex: no output schema, but the return shape is described per series; multiple edge cases covered; the tool is positioned against siblings; no annotations; but descriptions are complete for the API's surface.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% across 12 parameters, so parameters are already well described in the JSON schema. The description adds value beyond schema by documenting default server time, relative time shorthands, excluded endTime, break-down/filter semantics, and the validation-and-clear-error behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Query one analytics metric as a time series'; explicitly positioned as 'the core read tool' with 'everything the Analytics Query API exposes is reachable through it', distinguishing it as central versus the sibling metrics tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Strong context: 'Core read tool' implies primary choice; states validation against metric capabilities avoids opaque errors. Does not explicitly name sibling alternatives or when to avoid, but the core-tool positioning differentiates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_metricsA
Query several metrics over the same time range in one call, with the same breakdown and filter applied to each. Prefer this over repeated query_metric calls: the API allows only 30 queries per minute per account, and this paces them automatically.
A metric that fails (commonly because the experience does not use that feature) is reported with an error field and does not abort the rest. Breakdowns and filters a given metric does not support are dropped for that metric rather than failing it.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Narrow results to specific dimension values. | |
| endTime | No | Exclusive end. Defaults to today's UTC midnight so only complete buckets are returned — pass 'now' if you want the partial current day included. | |
| metrics | Yes | Exact, case-sensitive metric names. | |
| lastDays | No | Shorthand for the last N complete UTC days. Cannot be combined with startTime. | |
| breakdown | No | Dimensions to split by, where supported. | |
| startTime | No | Inclusive start. RFC 3339 (2026-01-01T00:00:00Z), a date (2026-01-01), or relative (-30d, -12w, -6mo, -2y, -48h, today, yesterday). | |
| universeId | No | Roblox universe (experience) ID, or a saved alias. Optional when a default universe is configured — use get_server_status to check, or find_universes to look one up. | |
| granularity | No | Time bucket size. OneDay suits most metrics; OneMinute/HalfHour/OneHour are for performance metrics; None returns a single aggregate for the whole range (the correct way to get distinct users or total revenue for a period). | |
| includeDataPoints | No | Include raw per-bucket values. Default false for this multi-metric view. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided; the description covers the load-bearing behavior: per-query rate limiting, error-without-a-bort, and dropped unsupported operations. It doesn't document return envelopes or all failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two well-formed paragraphs, front-loaded with purpose and differentiating value, but is otherwise dense and reference-like; the structural weight sits on the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 9 parameters and a 100% populated schema, but lacks an output schema and does not account for success-return or response-shape. The rich text around rate limits, error fields, and overprocesses fills in most of the behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully covers the 9 parameters; the descriptions add defaults (endTime default to today's UTC midnight, exclude; startTime relative; granularity calendar semantics; lastN shorthand; universeId alias) and therefore go beyond lazy names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with 'Query several metrics over the same time range', a specific verb+object. It clearly distinguishes itself from query_metric by supporting multiple metrics, automatic query pacing, and partial failure rather than abort.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'prefer this over repeated query_metric calls', explains the 30-query/min API limit, and notes that unsupported filters/breakdowns are silently dropped. Lacks an explicit when-not-to-use, but the guidance is otherwise strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_default_universeA
Store a default universe ID so later tool calls can omit universeId, and optionally save a short alias for it. Writes to this server's local config file; it does not change anything on Roblox.
| Name | Required | Description | Default |
|---|---|---|---|
| alias | No | Optional short name for this universe, usable anywhere universeId is accepted. | |
| universeId | Yes | Numeric universe ID to use as the default. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool writes to a local config file and does not change anything on Roblox, which is a key behavioral trait. However, it does not detail overwrite behavior or return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the main purpose, and the second sentence adds a critical caveat. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (2 params, no output schema) and the description covers purpose, side effects, and the alias feature. It lacks explicit mention of return values or repeated-call behavior, but for a small configuration setter this is nearly sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds that the alias is a short name usable wherever universeId is accepted, but this is already in the schema. The description doesn't add significant new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Store') and resource ('default universe ID'), explaining the purpose of allowing later calls to omit universeId. It also distinguishes this configuration tool from the analytics/metrics siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you want to set a persistent default for subsequent calls, and the local-config write contrasts with Roblox-side changes. However, it does not explicitly state when to use it versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
whoamiA
Identify the owner of the configured API key, and report exactly what it can read.
Open Cloud keys are otherwise anonymous — no analytics endpoint reveals the caller — so call this first whenever you need to know whose experiences these are, or when a query fails and you cannot tell whether the cause is a missing scope, a disabled key, or the wrong universe.
Returns the key's name, the Roblox account that created it (with username), whether it is enabled and unexpired, its scopes, and which universes it covers — where * means every experience the owner can access. Optionally also lists the owner's groups, which is usually where a studio's real titles live.
| Name | Required | Description | Default |
|---|---|---|---|
| includeGroups | No | Also list the key owner's group memberships and roles. Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It clearly states this is a read-only introspection (no side effects implied), and details what is returned (key owner, account, scopes, universes, groups). It also notes the optional groups parameter and the meaning of '*' for universes. It does not explicitly state 'does not modify anything', but the nature of the tool and the details provided are sufficient for an agent to trust it as a safe diagnostic call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured in three short paragraphs: purpose, usage context, and return details. It is front-loaded with the core action, avoids filler, and every sentence provides useful information (e.g., the wildcard meaning, the group mention). No redundancy or unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a single optional parameter and no output schema, the description is thorough: it covers the problem it solves (anonymity), when to invoke it, what it returns, and the optional behavior. It even provides troubleshooting context (missing scope, disabled key, wrong universe). This is complete for an agent to decide to call it and understand its output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (only one boolean parameter with a clear description). The description adds value by explaining why the includeGroups parameter is useful ('usually where a studio's real titles live') and its default behavior. This goes beyond the schema's bare description and justifies the parameter's purpose in practice.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Identify') and resource ('the owner of the configured API key') and explicitly differentiates from sibling tools by emphasizing that it reveals the caller identity, which is otherwise anonymous. It also lists what it returns (key name, account, scopes, universes), making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'call this first whenever you need to know whose experiences these are, or when a query fails and you cannot tell whether the cause is a missing scope, a disabled key, or the wrong universe.' It also clarifies that Open Cloud keys are anonymous, which directly informs when this tool is necessary. No alternatives are mentioned, but the context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
19 tool updates
v0.1.0- First observed
analyze_funnel - First observed
breakdown_metric_by_segments - First observed
compare_periods - First observed
describe_metric - First observed
find_universes - First observed
get_analytics_operation - First observed
get_experience_overview - First observed
get_metric_report - First observed
get_place_info - First observed
get_public_game_stats - First observed
get_server_status - First observed
get_universe_info - First observed
list_dimension_values - First observed
list_dimensions - First observed
list_metrics - First observed
query_metric - First observed
query_metrics - First observed
set_default_universe - First observed
whoami
TDQS
Most tools are clearly distinct (discovery vs query vs compare vs auth), and descriptions explicitly disambiguate similar pairs like list_dimensions/list_dimension_values. However, get_universe_info and get_public_game_stats overlap on storefront stats, and query_metric's breakdown parameter partially overlaps with breakdown_metric_by_segments.
The set follows a predictable verb-prefix scheme: get_ (7 tools), list_ (3), query_ (2), plus a few single-purpose verbs like compare_periods, analyze_funnel, find_universes, and set_default_universe. whoami breaks the pattern but is a recognizable convention; overall the naming is readable and navigable.
At 19 tools this is on the heavy side per the 3-15 ideal range, but the domain is genuinely broad: 168 metrics, 69 dimensions, funnels, universe discovery, public stats, and auth diagnostics each form distinct functional groups that earn their tools. A few pairs (query_metric/query_metrics, get_universe_info/get_public_game_stats) could theoretically merge, so it's slightly over-scoped rather than bloated.
The set thoroughly covers the read-side analytics lifecycle: discover (list_metrics, describe_metric, list_dimensions, list_dimension_values), query (single, batch, themed reports, breakdown, period comparison), funnels, universe/place context, and auth diagnostics. Minor gaps exist — no way to clear saved config/aliases, no raw bulk export tool — but agents can work around them.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Analytics your AI agent can actually use. Track, experiment, and optimize via MCP.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
- AgentCatOAuthcom.agentcat
Analytics and debugging for your MCP server — explore usage and sessions, then root-cause errors.
Related MCP Servers
- FlicenseAqualityCmaintenanceAn MCP server that bridges AI to Roblox Studio, enabling execution of Luau scripts, instance manipulation, play-testing control, and Open Cloud operations via natural language.21-
- AlicenseNot gradedqualityCmaintenanceMCP server that allows AI agents to execute code, inspect scripts, spy on remotes, and interact with a running Roblox game client.9514MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server that enables AI agents to execute Lua code, inspect scripts, spy on remotes, and interact with running Roblox game clients, including support for mobile executors on Android and iOS.951MIT
- AlicenseAqualityFmaintenanceUnofficial MCP server that lets AI agents query Aptabase analytics using cookie-authenticated dashboard endpoints, providing tools for metrics, events, and sessions.171MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Haydebug/Roblox-MCP-Analytics'
If you have feedback or need assistance with the MCP directory API, please join our Discord server