Skip to main content
Glama
scalably-io

io.scalably/gsc-mcp

Official
by scalably-io

gsc_query_search_analytics

Read-only

Query Google Search Console traffic data to analyze clicks, impressions, CTR, and position. Filter by dimensions, search type, and date range to diagnose SEO performance.

Instructions

Query Search Console traffic data - clicks, impressions, CTR, position.

THE workhorse tool. Supports all six dimensions (incl. HOUR, April 2025), all six search types, full filter compose, pagination, and auto-pagination.

Args: site_url: "https://example.com/" (URL-prefix) or "sc-domain:example.com" (domain). start_date / end_date: YYYY-MM-DD (Pacific Time). 16-month retention hard cap. dimensions: list of {date, query, page, country, device, searchAppearance, HOUR}. HOUR requires data_state='hourly_all'. searchAppearance cannot be combined with other dimensions in one query - query it alone and join client-side. search_type: web (default) | image | video | news | discover | googleNews. filters: flat list [{dimension, operator, expression}]. Operators: equals, contains, notEquals, notContains, includingRegex, excludingRegex. filter_groups: advanced - pass raw dimensionFilterGroups if you need OR logic. Mutually exclusive with filters. aggregation_type: auto (default) | byPage | byProperty | byNewsShowcasePanel. data_state: final (default, ~2-3d lag) | all (fresh, includes unfinalized) | hourly_all (~10d history with HOUR dimension). row_limit: per-call cap, 1–25000 (API hard cap). start_row: 0-based offset for single-page paging. max_rows: if set (up to 1M), auto-paginate until exhausted or max_rows hit.

Response: {rows, row_count, response_aggregation_type, first_incomplete_date?, first_incomplete_hour?, metadata}. Use first_incomplete_date to distinguish 'data still cooking' from 'data is final' when data_state != 'final'.

Gotchas:

  • 16-month retention. start_date older than 16 months returns empty.

  • Anonymized queries (fewer than ~a dozen users over 2-3 months) drop from the 'query' dimension but count in totals - page-level data is more complete.

  • Aggregation shift: with a page filter, totals aggregate byPage (inflates clicks vs property-level). Set aggregation_type explicitly when comparing.

  • searchAppearance cannot co-exist with other dimensions (API 400).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filtersNo
end_dateYes
max_rowsNo
site_urlYes
row_limitNo
start_rowNo
data_stateNo
dimensionsNo
start_dateYes
search_typeNo
filter_groupsNo
aggregation_typeNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.1

TDQS

A4.8/5.0
Behavior5/5

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

The description goes far beyond the readOnlyHint and openWorldHint annotations by disclosing behavioral gotchas: 16-month retention limits, anonymized queries dropping from the query dimension, aggregation shifts under page filters, and searchAppearance incompatibility with other dimensions. It also explains data_state semantics, response fields like first_incomplete_date, and auto-pagination behavior.

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

Conciseness5/5

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

The description is long, but it has 12 parameters and no schema-level descriptions, so the length is justified. It is well-structured with Args and Gotchas sections, front-loads the core purpose, and every line adds operational value without redundancy.

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

Completeness5/5

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

Despite the high parameter count and zero schema coverage, the description covers required params, optional behaviors, mutual exclusions, hard limits, response shape, and real-world pitfalls. The presence of an output schema means return-value details do not need repeating, and nothing essential is left missing for an agent to call this tool correctly.

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

Parameters5/5

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

The input schema has 0% description coverage, so the description must carry the full burden of parameter semantics, and it does. It documents all parameters with concrete details: date format and timezone, HOUR requiring data_state='hourly_all', search_type values, filter operator list, filter_groups OR logic, aggregation_type options, row_limit cap, start_row offset, and max_rows auto-pagination behavior.

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?

The description opens with a specific verb and resource: 'Query Search Console traffic data - clicks, impressions, CTR, position.' This unambiguously states the tool's function and output metrics. The name and description clearly separate it from sibling tools like gsc_list_sites and gsc_inspect_url.

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?

The description positions this as 'THE workhorse tool' and enumerates supported dimensions, search types, filters, and pagination, making it clear this is the default tool for Search Console analytics queries. It does not explicitly name alternatives or state when not to use it, but the sibling tools are sufficiently different that the intended usage context is clear.

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