Skip to main content
Glama

query_sentiment

Read-only

Run analytical queries over the community pulse (player sentiment) data. Supports six operations via the 'operation' field: 'overview' (totals: message count, unique users, avg sentiment), 'topics' (per-topic volume + positive/negative split + trend), 'phrases' (top complaint/praise/feature phrases — use phraseColumn='hates' for complaints), 'over_time' (volume and sentiment trend over a time series), 'breakdown' (volume by topic, source, country, device, or language), 'quotes' (sample real player messages; also resolves contentIds from get_community_pulse). All queries are parameterized and scoped to the current project. Load the understand-community-pulse skill (load_skill("understand-community-pulse")) first.

Input Schema

NameRequiredDescriptionDefault
limitNoMax rows to return. Effective cap varies by operation: topics ≤ 20 (prefer topicLimit), phrases ≤ 50, over_time (no breakdown) ≤ 500 date buckets; over_time (with breakdown) = max dimensions per date bucket (default 10, all dates always included); breakdown ≤ 50, quotes ≤ 25.
filtersNoOptional shared filters applied to all operations.
breakdownNo[over_time] Optional breakdown dimension: 'topic' splits each date by topic, 'source' by source_id.
dimensionNo[breakdown] Required. Dimension to group by: 'topic' (topic key), 'source' (source_id), 'country' (metadata.country), 'device' (metadata.device), 'lang' (metadata.lang).
operationYesWhich query to run: 'overview' — headline counts (messages, users, threads, avg sentiment); 'topics' — per-topic volume + sentiment split + trend comparison; 'phrases' — top complaint/praise/feature phrases (requires phraseColumn); 'over_time' — volume and sentiment as a time series; 'breakdown' — volume by a dimension (requires dimension); 'quotes' — sample real player messages.
projectIdYesThe project (application) id to scope this call to. Use list_projects to discover valid ids.
topicKeysNo[phrases] When groupByTopic=true, restrict to these topic keys. Omit to include all topics.
contentIdsNo[quotes] Explicit content_id values to resolve (e.g. from get_community_pulse quoteContentIds). When supplied, replaces filter-based sampling with a direct point lookup.
topicLimitNo[topics] Max topics to return (default 10, max 20).
environmentYesThe environment name to scope this call to (e.g. 'production'). Use list_projects to discover the names available to this token.
granularityNo[over_time] Time bucket size: 'day' (default) or 'week'.
groupByTopicNo[phrases] If true, return the top phrases per topic. If false (default), return a flat ranked list across all topics.
phraseColumnNo[phrases] Required. Which extracted phrase array to aggregate: 'hates' = complaint phrases (what users dislike), 'loves' = praise phrases (what users enjoy), 'feature_mentions' = named game features referenced.
recentWindowDaysNo[topics] Days used for the 'last window' trend comparison. Defaults to half the lookback. Must be ≤ filters.days.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds that all queries are parameterized and scoped to the current project, and that supplying contentIds swaps filter-based sampling for a point lookup. It says nothing about cost/latency characteristics or result shape beyond the per-operation labels, so the added behavioral value is modest.

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

Conciseness4/5

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

Front-loaded with the scope sentence, followed by an operation menu where each entry carries its return shape. The enumeration is long but each clause is load-bearing; only the trailing skill-load instruction could arguably move to the front.

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

Completeness4/5

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

With 14 parameters, 6 operations and no output schema, the description does real work by sketching what each operation returns (totals, per-topic split, trend series, sample messages). Pagination and the exact response envelope are unaddressed, but per-operation caps are documented in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is a 3; the description earns above that by consolidating the operation-to-parameter contract in one place — 'phrases ... use phraseColumn=hates for complaints', '[phrases] requires phraseColumn', '[breakdown] requires dimension'. That cross-field dependency reasoning is the main thing an agent gets wrong on a 14-parameter dispatcher, and it is surfaced clearly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Run analytical queries over the community pulse (player sentiment) data' — then enumerates all six operations with their output shapes. It is clearly distinguishable from get_community_pulse (which yields quoteContentIds) and list_sentiment_sources (which yields source ids).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete prerequisite ('Load the understand-community-pulse skill ... first') and names sibling touchpoints (get_community_pulse for contentIds, list_sentiment_sources for ids). It does not, however, explicitly say when to reach for get_community_pulse instead of this tool, so the alternative routing is only implicit.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources