roblox-analytics-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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. |
| 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. |
| 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. |
| 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 Note |
| 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. |
| 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 |
| 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. |
| 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: |
| 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. |
| 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 |
| 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 With a |
| analyze_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. |
| 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. |
| 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. |
| 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 |
| 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 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 |
| 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. |
| 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. |
| 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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