Skip to main content
Glama

Search performance (clicks, impressions, CTR, position)

gsc_query_analytics
Read-only

Query Google Search performance data grouped by dimensions (query, page, country, device, searchAppearance, date, hour) with filters. A single Search Analytics query returns at most 25,000 rows (platform limit): JSON output is capped at 25,000 rows, and format=csv keeps paginating with startRow until your limit, but it stops as soon as the API rejects the next page and then reports summary.truncated=true — so never treat a shorter rows_total as a complete dataset. format=csv writes the rows to a file and returns the path. The hour dimension requires data_state=hourly_all (set automatically when unset).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "site": "<site>"
    },
    "name": "gsc_query_analytics"
  }
}

Input Schema

NameRequiredDescriptionDefault
siteYesSearch Console property: exact (sc-domain:example.com, https://example.com/) or just a domain/URL, matched automatically.
chartNoAlso return a PNG chart of the result as an image, for clients that can display images.
limitNoMax rows. JSON output is capped at 25000; format=csv asks for more by paginating, but the API only serves its own maximum — check summary.truncated before treating the rows as complete.
rangeNoPreset period ending yesterday (your local calendar day). Default last_28_days. Ignored when start_date/end_date are given.
formatNojson
filtersNoAll filters are ANDed. country uses ISO 3166-1 alpha-3 (e.g. POL), device: DESKTOP|MOBILE|TABLET.
end_dateNoYYYY-MM-DD (use together with start_date)
data_stateNoall = include fresh (not finalized) data; hourly_all for hour dimension.
dimensionsNo
start_dateNoYYYY-MM-DD (use together with end_date)
search_typeNoweb
aggregation_typeNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint and destructiveHint, and the description goes well beyond them: the 25,000-row platform limit, the JSON hard cap, CSV's startRow pagination that stops when the API rejects the next page, the summary.truncated flag, and CSV writing rows to a file and returning the path. These are non-obvious failure modes an agent could not infer from structured fields. It stops short of describing pagination tokens or timing for JSON.

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?

Purpose is front-loaded in the first sentence and every subsequent sentence carries distinct information about limits or format behavior. The middle sentence about CSV pagination is long and clause-heavy, which slightly hurts readability, but nothing is redundant.

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?

For a 12-parameter, no-output-schema analytics tool, the description covers the highest-risk aspects: result-set completeness, truncation signaling, and file-vs-inline output. It leaves a few parameters unexplained, but those are documented (or at least enumerated) in the schema, so an agent has enough to call it correctly.

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 description coverage is 67%, and the description compensates for the biggest gap: `format` has no schema description at all, and the text explains that csv writes to a file and returns a path. It also adds the cross-parameter rule that the hour dimension requires data_state=hourly_all (set automatically when unset), which the schema does not state. Remaining params (search_type, aggregation_type, chart, range) are left to the schema.

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 — "Query Google Search performance data grouped by dimensions (query, page, country, device, searchAppearance, date, hour) with filters" — and enumerates the dimensions, so an agent knows exactly this is the raw Search Analytics retrieval tool rather than a derived report like report_quick_wins or report_ctr_outliers. It is distinguishable from every sibling without opening a schema.

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

Usage Guidelines3/5

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

It gives real operational guidance — use format=csv when you need more than the 25,000-row JSON cap, and check summary.truncated before treating results as complete — but gives no routing advice about when to call this versus the many report_* siblings that presumably wrap it. Usage context is implied rather than contrasted against alternatives.

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