Skip to main content
All tools are read-only and are called via tools/call over POST /mcp. You need an active Google Search Console subscription, and your authorized Google account must have access to the properties you query.

Common parameters

siteUrl
string
required
A Search Console property. Either a URL-prefix property (https://www.example.com/) or a domain property (sc-domain:example.com). Get valid values with list_sites.
startDate / endDate
string (YYYY-MM-DD)
Date range for the report. Must be the format YYYY-MM-DD. See data freshness.

list_sites

Lists the verified properties your account has access to. Arguments: none.
sites
array
List of properties.
{ "name": "list_sites", "arguments": {} }

top_queries

The most-clicked search queries for a property over a date range.
siteUrl
string
required
startDate
string (YYYY-MM-DD)
required
endDate
string (YYYY-MM-DD)
required
limit
integer
default:"10"
Max number of rows. Integer between 1 and 25000.
queries
array
Rows sorted by clicks. Each item has query, clicks, impressions, ctr and position.
{
  "name": "top_queries",
  "arguments": {
    "siteUrl": "sc-domain:example.com",
    "startDate": "2026-05-01",
    "endDate": "2026-05-28",
    "limit": 5
  }
}

top_pages

The most-clicked pages for a property over a date range. Same arguments as top_queries.
pages
array
Rows sorted by clicks. Each item has page, clicks, impressions, ctr and position.
{
  "name": "top_pages",
  "arguments": {
    "siteUrl": "sc-domain:example.com",
    "startDate": "2026-05-01",
    "endDate": "2026-05-28"
  }
}

query_performance

Clicks, impressions, CTR and position for a single query.
siteUrl
string
required
query
string
required
The exact search query to report on.
startDate
string (YYYY-MM-DD)
required
endDate
string (YYYY-MM-DD)
required
metrics
object
clicks, impressions, ctr, position. If the query has no data in the period, zeros are returned.
{
  "name": "query_performance",
  "arguments": {
    "siteUrl": "sc-domain:example.com",
    "query": "example keyword",
    "startDate": "2026-05-01",
    "endDate": "2026-05-28"
  }
}

page_performance

Like query_performance, but for a single page. Use page (exact page URL) instead of query.
page
string
required
The exact page URL to report on.
{
  "name": "page_performance",
  "arguments": {
    "siteUrl": "sc-domain:example.com",
    "page": "https://example.com/product",
    "startDate": "2026-05-01",
    "endDate": "2026-05-28"
  }
}

compare_periods

Compares metrics between two periods with both absolute and percentage differences. Can be broken down by a dimension.
siteUrl
string
required
periodAStart
string (YYYY-MM-DD)
required
periodAEnd
string (YYYY-MM-DD)
required
periodBStart
string (YYYY-MM-DD)
required
periodBEnd
string (YYYY-MM-DD)
required
dimension
string (enum)
Optional breakdown: query, page, country, device, searchAppearance or date. Omit to compare across the whole property.
periodA / periodB
object
{ startDate, endDate, totals }, where totals is clicks, impressions, ctr, position.
delta
object
Differences: clicks and impressions have { absolute, percent }; ctr and position have { absolute }. percent is null if the baseline was 0.
{
  "name": "compare_periods",
  "arguments": {
    "siteUrl": "sc-domain:example.com",
    "periodAStart": "2026-04-01",
    "periodAEnd": "2026-04-28",
    "periodBStart": "2026-05-01",
    "periodBEnd": "2026-05-28"
  }
}

search_analytics_query

Advanced: send a raw Search Analytics query straight through to the Search Console API. For power users who want the full surface (dimensions, filters, pagination).
siteUrl
string
required
requestBody
object
required
Raw Search Analytics request body:
responseAggregationType
string | null
How Google aggregated the response.
rows
array
Raw Search Analytics rows (keys, clicks, impressions, ctr, position).
{
  "name": "search_analytics_query",
  "arguments": {
    "siteUrl": "sc-domain:example.com",
    "requestBody": {
      "startDate": "2026-05-01",
      "endDate": "2026-05-28",
      "dimensions": ["query", "device"],
      "dimensionFilterGroups": [
        { "filters": [{ "dimension": "country", "operator": "equals", "expression": "dnk" }] }
      ],
      "rowLimit": 100,
      "dataState": "final"
    }
  }
}
Fields like ctr (0–1) and position follow the Search Console API’s own definitions. See Errors & limits for limits and data freshness.