Aggregate workspace entity data with SQL for counts, rankings, volumes, distributions, and trends. Use this tool instead of list/search tools whenever the user asks "which/top/most/how many/volume/by product/by account/by month". Use for examples like: "Which accounts have the most signals in the last 90 days?" -> entity signal, groupBy account, metric count, filters.timeWindow 90d. Use for examples like: "Show insight volume by product this month" -> entity insight, groupBy product, metric count, filters.since = start of current month. avg(globalScore) averages idea scores; it does not rank individual ideas. For opportunity impact use avg(expansionScore), grouped by product or okr. avg(expansionScore) and groupBy okr are opportunity-only. Use for idea-vote questions like: "Which ideas have the most votes?" -> entity idea_vote, groupBy idea, metric count; "Which accounts voted most this quarter?" -> entity idea_vote, groupBy account, metric count, filters.since = quarter start. For taxonomy questions, call discovery.describe_taxonomy first and use its group key; never guess one. Examples: "How many insights are native-gap by product area?" -> entity insight, groupBy taxonomy; "How many ideas are in each Stage, Category, or PHI level?" -> entity idea, groupBy taxonomy. Set taxonomyGroupKey to the discovered workspace group key and metric to count, sum(arr), or distinct(account). List, multi-select, text, and unassigned values are returned in the workspace's own vocabulary. Validated capability matrix: signal: groups [account, status (processing status), type (evidence kind), month (creation month)], metrics [count, sum(arr), distinct(account)], filters [status, type, accountId, accountIds]; insight: groups [account, product, tag, status, priority, type (insight type), month (creation month)], metrics [count, sum(arr), distinct(account)], filters [status, priority, type, productId, accountId, accountIds, tagId]; opportunity: groups [account, product, tag, status, priority, month (creation month), okr], metrics [count, sum(arr), avg(expansionScore), distinct(account)], filters [status, priority, productId, accountId, accountIds, tagId]; idea: groups [account, product, tag, status, priority, month (creation month)], metrics [count, sum(arr), avg(globalScore), distinct(account)], filters [status, priority, productId, accountId, accountIds, tagId]; idea_vote: groups [idea, account, product (idea product), tag (idea tag), status (idea status), priority (idea priority), month (vote month)], metrics [count, sum(arr), distinct(account)], filters [status, priority, productId, accountId, accountIds, tagId]; initiative: groups [product, tag, status, priority, month (creation month)], metrics [count], filters [status, priority, productId, tagId]; account: groups [account, status (lifecycle stage), type (company size (employees)), month (creation month)], metrics [count, sum(arr), distinct(account)], filters [status, type, accountId, accountIds]. Group meanings also apply to matching filters. timeWindow/since and month use createdAt (votedAt for idea_vote), not activity or revenue history. Accounts include all lifecycle stages, not only customers; account sum(arr) is recorded ARR, missing values contribute zero. Taxonomy defaults to 30d and supports insight/idea with count, sum(arr), distinct(account). Do not fetch raw insights/signals/accounts/ideas and count them in model context when this tool can compute the aggregate.