Skip to main content
Glama
woosteragency

Google Search Console MCP Server

get_advanced_search_analytics

Retrieve Google Search Console search analytics with sorting, filtering, pagination, and multiple dimensions to analyze query, page, device, and country performance.

Instructions

Get advanced search analytics data with sorting, filtering, and pagination.

Args:
    site_url: Exact GSC property URL from list_properties (e.g. "https://example.com/" or
              "sc-domain:example.com"). Domain properties cover all subdomains — use the
              domain property as site_url and filter by page to analyze a specific subdomain.
    start_date: Start date in YYYY-MM-DD format (defaults to 28 days ago)
    end_date: End date in YYYY-MM-DD format (defaults to today)
    dimensions: Dimensions to group by, comma-separated (e.g., "query,page,device")
    search_type: Type of search results (WEB, IMAGE, VIDEO, NEWS, DISCOVER)
    row_limit: Maximum number of rows to return (max 25000)
    start_row: Starting row for pagination
    sort_by: Metric to sort by (clicks, impressions, ctr, position). Applied
             client-side to the returned rows, since Google only sorts by clicks.
    sort_direction: Sort direction (ascending or descending). For position,
             ascending puts the best (lowest) average position first.
    filter_dimension: Single filter dimension (query, page, country, device). Use 'filters' instead for multiple filters.
    filter_operator: Single filter operator (contains, equals, notContains, notEquals)
    filter_expression: Single filter expression value
    filters: JSON array of filter objects for AND logic across multiple dimensions. Overrides
             filter_dimension/filter_operator/filter_expression when provided. Each object must
             have 'dimension', 'operator', and 'expression' keys. Valid dimensions: query, page,
             country, device. Valid operators: contains, equals, notContains, notEquals.
             Example: [{"dimension":"country","operator":"equals","expression":"usa"},
                       {"dimension":"device","operator":"equals","expression":"MOBILE"}]
    data_state: Data freshness — "all" (default, matches GSC dashboard) or "final" (confirmed data only, 2-3 day lag)

Input Schema

NameRequiredDescriptionDefault
filtersNo
sort_byNoclicks
end_dateNo
site_urlYes
row_limitNo
start_rowNo
data_stateNo
dimensionsNoquery
start_dateNo
search_typeNoWEB
sort_directionNodescending
filter_operatorNocontains
filter_dimensionNo
filter_expressionNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.4.1

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description must carry behavioral disclosure and it does substantially: it warns that sort_by is applied client-side because Google only sorts by clicks, caps row_limit at 25000, explains data_state freshness semantics (final data lags 2-3 days), documents defaults for dates, and states the override precedence between filter args. Missing are failure modes or permission requirements for the site_url property, but the notable gotchas are surfaced.

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?

The format is a docstring-style Args block: one thin summary sentence followed by dense, front-loaded parameter lines that each carry real information. Nearly every line earns its place, though the leading sentence is too vague to orient the agent and the nesting of filter precedence rules inside the arg list is slightly awkward.

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?

An output schema exists, so return values need not be described. For a 14-parameter tool with zero schema coverage and no annotations, the description covers formatting, defaults, precedence, refresh semantics, and the pagination pair (row_limit/start_row) adequately; the only real hole is sibling disambiguation.

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?

Schema description coverage is 0% across 14 parameters, so the description has to do all the work and it does: every parameter gets type, format, or default (YYYY-MM-DD dates, comma-separated dimensions, 25000 row cap, ascending/descending, all/final), and it enumerates valid search types, filter dimensions, and filter operators plus a concrete JSON example for the filters array.

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

Purpose4/5

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

The opening sentence states a specific verb and resource: fetch advanced search analytics data with sorting, filtering, and pagination. That is clear, but it never distinguishes this tool from its close siblings get_search_analytics, get_search_by_page_query, get_performance_overview, or compare_search_periods — the word 'advanced' carries no defined meaning for an agent choosing between them.

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?

Usage guidance exists but is parameter-level rather than tool-level: it explains that 'filters' overrides the single-filter args, that a domain property should be paired with a page filter to analyze a subdomain, and that sorting happens client-side. It gives no explicit when-to-use-this-instead-of-a-sibling statement and no exclusions, so selection remains inferred from the name.

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