tools/call over POST /gsc/mcp. You
need an active Google Search Console subscription, your user must hold a seat on it
(assigned under Team in the portal, see Team), and your authorized
Google account must have access to the properties you query.
In tools/list every tool has a title and the annotations readOnlyHint: true,
destructiveHint: false and openWorldHint: false. A successful result contains the
payload twice: as JSON text in content and as the same object in
structuredContent. The examples below show that payload. If your account has no
Google Search Console subscription, or your user has no seat on it, the initialize
result includes instructions explaining how to get access.
Endpoint:
https://mcp.consile.ai/gsc/mcp. GSC is its own named connector:
tools/list returns the seven tools below plus the
connect_account system tool. An account without a
Google Search Console subscription sees only connect_account. Section headings use
the bare tool name. In requests, always send the namespaced name (for example
gsc__top_queries). A bare name returns Unknown tool.. The connector is
multi-instance: each additional Google account (a “portal” in the portal UI) has
its own endpoint and tool prefix, e.g. https://mcp.consile.ai/gsc-2/mcp with tools
named gsc-2__<tool>. Portals are added in the portal by an administrator.Common parameters
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.string (YYYY-MM-DD)
required
Date range for the report, in the format
YYYY-MM-DD. The fixed tools
(top_queries, top_pages, query_performance, page_performance and
compare_periods) send no type or dataState, so Google’s defaults apply: web
search only, and finalized data only. The most recent days (typically two to three)
are therefore missing. Use search_analytics_query with
dataState: "all" to include fresh, preliminary data.list_sites
Lists the Search Console properties of the authorized Google account, with your permission level. Properties withpermissionLevel siteUnverifiedUser return no
data.
Arguments: none.
array
List of properties.
top_queries
The most-clicked search queries for a property over a date range.string
required
string (YYYY-MM-DD)
required
string (YYYY-MM-DD)
required
integer
default:"10"
Max number of rows. Integer between
1 and 25000.array
Rows sorted by clicks. Each item has
query, clicks, impressions, ctr
and position.top_pages
The most-clicked pages for a property over a date range. Same arguments astop_queries (limit defaults to 10, max 25000).
array
Rows sorted by clicks. Each item has
page, clicks, impressions, ctr
and position.query_performance
Clicks, impressions, CTR and position for a single query.string
required
string
required
The exact search query to report on.
string (YYYY-MM-DD)
required
string (YYYY-MM-DD)
required
object
clicks, impressions, ctr, position. If the query has no data in the
period, zeros are returned.page_performance
Likequery_performance, but for a single page. Use
page (exact page URL) instead of query. Returns zeros if the page has no data
in the period.
string
required
string
required
The exact page URL to report on.
string (YYYY-MM-DD)
required
string (YYYY-MM-DD)
required
compare_periods
Compares Search Analytics totals between two periods, with absolute and percentage differences. The response contains totals and deltas only, not a per-row breakdown. Withdimension set, each period’s totals are computed from up to 25,000
rows of that dimension (clicks and impressions summed, ctr = clicks / impressions,
position impression-weighted). These totals can be lower than the site-wide numbers
when Google leaves rows out, for example anonymized queries. Omit dimension to get
Google’s site-wide totals. To compare individual queries or pages, call
gsc__search_analytics_query once per period.
string
required
string (YYYY-MM-DD)
required
string (YYYY-MM-DD)
required
string (YYYY-MM-DD)
required
string (YYYY-MM-DD)
required
string (enum)
Optional:
query, page, country, device, searchAppearance or date.
Changes how the totals are computed; it does not add a breakdown to the response.
Omit for site-wide totals.object
{ startDate, endDate, totals }, where totals is clicks, impressions,
ctr, position.object
Differences, computed as period B minus period A, so period A is the baseline. Pass
the earlier period as A.
clicks and impressions have { absolute, percent },
where percent is relative to period A and is null if period A’s value was 0.
ctr and position have { absolute }. For position a lower value is better, so
a negative delta means the average ranking improved.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, search type and fresh data).string
required
object
required
Raw Search Analytics request body. Fields not listed here are ignored (for example
the legacy
searchType; use type).string | null
How Google aggregated the rows, or
null.array
Raw rows:
keys (one value per requested dimension, in order), clicks, impressions, ctr, position.connect_account
connect_account is a system tool that the GSC endpoint lists next to the seven GSC
tools (title “Connect your account”). It takes no arguments and is read-only. Its
name has no gsc__ prefix. It returns
{ "connect_url": "…", "instructions": "…" }. The user opens connect_url in a
browser and is sent to Google to approve read-only Search Console access. The link
expires after 10 minutes. It only works for accounts that subscribe to Google Search
Console, and for users who have accepted Consile’s terms in the portal. Use it also
to reconnect, for example after access was revoked at Google: completing the flow
replaces the existing connection for that endpoint.
Request
Errors
Tool failures come back as a normaltools/call result with isError: true and a
short text, not as a JSON-RPC error.
Requests to the endpoint are also rate-limited per account and connector. When the
limit is exceeded you get HTTP
429 (JSON-RPC error -32029, Retry-After: 1)
instead of a tool result. Google’s own Search Console API quotas apply on top. See
Errors & limits for the current limits.
Fields like
ctr (0 to 1) and position follow the Search Console API’s own
definitions. See Errors & limits for limits and
data freshness.