query_sentiment
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
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max 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. | |
| filters | No | Optional shared filters applied to all operations. | |
| breakdown | No | [over_time] Optional breakdown dimension: 'topic' splits each date by topic, 'source' by source_id. | |
| dimension | No | [breakdown] Required. Dimension to group by: 'topic' (topic key), 'source' (source_id), 'country' (metadata.country), 'device' (metadata.device), 'lang' (metadata.lang). | |
| operation | Yes | Which 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. | |
| projectId | Yes | The project (application) id to scope this call to. Use list_projects to discover valid ids. | |
| topicKeys | No | [phrases] When groupByTopic=true, restrict to these topic keys. Omit to include all topics. | |
| contentIds | No | [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. | |
| topicLimit | No | [topics] Max topics to return (default 10, max 20). | |
| environment | Yes | The environment name to scope this call to (e.g. 'production'). Use list_projects to discover the names available to this token. | |
| granularity | No | [over_time] Time bucket size: 'day' (default) or 'week'. | |
| groupByTopic | No | [phrases] If true, return the top phrases per topic. If false (default), return a flat ranked list across all topics. | |
| phraseColumn | No | [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. | |
| recentWindowDays | No | [topics] Days used for the 'last window' trend comparison. Defaults to half the lookback. Must be ≤ filters.days. |