The get_search_console_performance MCP tool queries the connected Search Console property's Search Analytics — clicks, impressions, CTR, and average position — and is read-only, using no DataForSEO credits.[1] In get_search_console_performance, ctr is a 0–1 fraction, position is a 1-based average, dates are in Pacific Time, and the last ~3 days of data may be incomplete due to GSC data lag.[1] Keyword cannibalization occurs when multiple pages on a site compete for the same search query, splitting ranking signals and reducing overall position; consolidating or differentiating overlapping content mitigates it.
The dimensions parameter of get_search_console_performance defaults to ['query']; ['page'] returns top pages, ['query','page'] maps queries to pages for cannibalization detection, and ['date'] produces a time series.[1] The dateRange convenience parameter defaults to last_28_days and is ignored when explicit startDate and endDate are provided; the maximum GSC lookback is 16 months.[1] The rowLimit parameter defaults to 1,000 (the maximum per call); GSC sorts results by clicks descending and cannot filter by position, so striking-distance position filtering must be done client-side, and pagination uses startRow when hasMore is true.[1] The filters parameter accepts up to 5 AND-combined dimension filters; to get queries for one page, pass [{dimension:'page', operator:'equals', expression:'https://example.com/post'}] with dimensions: ['query'].[1]
When searchAppearance is included in dimensions alongside any other dimension, get_search_console_performance returns an invalid_request error because the GSC API rejects that combination.[1] Providing only one of startDate or endDate in get_search_console_performance returns an invalid_request error; both must be supplied together, or neither (use dateRange instead).[1] GSC connection errors in get_search_console_performance are classified into three types — GscNotConnectedError (not connected), GscTokenError (expired or revoked token), and GscApiError (API-level error) — each producing a distinct human-readable message and reason in structured output.[1] When GSC is not connected, get_search_console_performance returns structured content with ok: false, reason: "not_connected" and a connectUrl pointing to the project's Search Performance page rather than the settings page.[1]
The get_search_console_performance handler calls GscService.getPerformance and detects whether the result has more rows by checking if rows.length >= requestedLimit, exposing hasMore and nextStartRow for pagination.[1] The text summary of get_search_console_performance results shows the first 15 rows as a formatted table (constant TEXT_SUMMARY_ROWS = 15), while the structured content carries the full row set.[1]
The inspect_urls MCP tool accepts 1–10 absolute URLs to inspect, each of which must belong to the connected GSC property.[1]
Sources