Google Search Console MCP
This server connects an AI app to Google Search Console, letting you inspect search performance, index status, and sitemaps, and manage properties and sitemaps with clear read/write boundaries.
List and inspect properties — see every accessible Search Console property and its exact siteUrl/permission level via
list_sitesandget_site.Add or remove properties — register a new property (
add_site) or unlink one (delete_site); changes are marked destructive/non-destructive for confirmation.Query search analytics — get clicks, impressions, CTR, and position by date, query, page, country, device, search appearance, or hour; filter, paginate, choose data state, and aggregate (
search_analytics,get_top_queries).Inspect URL index status — check whether a URL is indexed, its coverage, crawl info, canonicals, sitemaps, and rich results via
inspect_url(read-only, with quota warnings).Manage sitemaps — list, view, submit/resubmit, and delete submitted sitemaps (
list_sitemaps,get_sitemap,submit_sitemap,delete_sitemap).Raw API access — call any Search Console API endpoint directly with
raw_requestas an escape hatch for unsupported operations.
Provides tools for interacting with Google Search Console's API, enabling search performance analytics (clicks, impressions, CTR, position), sitemap management, URL index inspection, and property management.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Search Console MCPIs https://example.com/pricing indexed? If not, why?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google Search Console MCP
English | Русский
A1 Google Search Console MCP connects an AI app to Google Search Console. Investigate search performance, check whether a URL is indexed, inspect sitemaps and deliberately submit or remove a sitemap when needed.
It works with the properties your Google account can access. The important detail is that it uses the exact Search Console property value — a domain property and a URL-prefix property are different objects.
12 tools. Seven tools read properties, search data, sitemaps and index status; two add a property or submit a sitemap; three can remove data or call an arbitrary API method.
Exact property IDs.
https://example.com/,https://www.example.com/andsc-domain:example.comare distinct.list_sitesshows the value to use.Search data with context. Query clicks, impressions, CTR and position by date, page, query, country, device or search appearance.
Indexing, not publishing. URL inspection explains Google’s current status; it does not force a page into the index.
Start with a read-only question:
Show the top 20 search queries for my property over the last 28 days, with clicks and CTR.
Connect the server · Explore use cases · Open technical documentation
See it work in a minute
You: Is
https://example.com/pricingindexed? If not, why?Assistant: Inspects the URL and shows the index verdict, coverage, crawl information and canonical URLs. Nothing changes.
You: Check my submitted sitemaps and prepare a resubmission for the one with errors.
Assistant: Shows the sitemap, its warnings and errors, then asks for confirmation before submitting it again.
You: Confirm.
Assistant: Resubmits the selected sitemap. It does not change page content or guarantee indexing.
Related MCP server: mcp-gsc
Contents
Quick start
You need Node.js 20+, a Google account with access to a Search Console property and OAuth credentials from Google Cloud.
Add the server to your AI app.
Start with the read-only question above.
In the app: open Settings → MCP servers, select Add server, choose STDIO, enter the command npx -y mcp-google-search-console@latest and environment variables GOOGLE_SEARCH_CONSOLE_CLIENT_ID, GOOGLE_SEARCH_CONSOLE_CLIENT_SECRET, GOOGLE_SEARCH_CONSOLE_REFRESH_TOKEN, then select Save and Restart.
codex mcp add google-search-console \
--env GOOGLE_SEARCH_CONSOLE_CLIENT_ID=your_client_id \
--env GOOGLE_SEARCH_CONSOLE_CLIENT_SECRET=your_client_secret \
--env GOOGLE_SEARCH_CONSOLE_REFRESH_TOKEN=your_refresh_token \
-- npx -y mcp-google-search-console@latest
codex mcp listclaude mcp add \
--env GOOGLE_SEARCH_CONSOLE_CLIENT_ID=your_client_id \
--env GOOGLE_SEARCH_CONSOLE_CLIENT_SECRET=your_client_secret \
--env GOOGLE_SEARCH_CONSOLE_REFRESH_TOKEN=your_refresh_token \
--transport stdio --scope user google-search-console \
-- npx -y mcp-google-search-console@latest
claude mcp listThe current official path is Settings → Extensions. For a custom desktop extension, open Advanced settings → Extension Developer → Install Extension…, select a .mcpb file and follow the prompts.
This repository currently publishes an npm stdio package and does not contain a .mcpb bundle. For Claude Desktop builds that still support local configuration, use the following JSON stdio configuration as a fallback:
{"mcpServers":{"google-search-console":{"command":"npx","args":["-y","mcp-google-search-console@latest"],"env":{"GOOGLE_SEARCH_CONSOLE_CLIENT_ID":"your_client_id","GOOGLE_SEARCH_CONSOLE_CLIENT_SECRET":"your_client_secret","GOOGLE_SEARCH_CONSOLE_REFRESH_TOKEN":"your_refresh_token"}}}}In those builds, save it to ~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows.
Claude Desktop MCP documentation
Add to ~/.cursor/mcp.json on macOS/Linux or %USERPROFILE%\.cursor\mcp.json on Windows:
{"mcpServers":{"google-search-console":{"type":"stdio","command":"npx","args":["-y","mcp-google-search-console@latest"],"env":{"GOOGLE_SEARCH_CONSOLE_CLIENT_ID":"your_client_id","GOOGLE_SEARCH_CONSOLE_CLIENT_SECRET":"your_client_secret","GOOGLE_SEARCH_CONSOLE_REFRESH_TOKEN":"your_refresh_token"}}}}Run MCP: Open User Configuration and add:
{"servers":{"google-search-console":{"type":"stdio","command":"npx","args":["-y","mcp-google-search-console@latest"],"env":{"GOOGLE_SEARCH_CONSOLE_CLIENT_ID":"${input:gsc_client_id}","GOOGLE_SEARCH_CONSOLE_CLIENT_SECRET":"${input:gsc_client_secret}","GOOGLE_SEARCH_CONSOLE_REFRESH_TOKEN":"${input:gsc_refresh_token}"}}},"inputs":[{"type":"promptString","id":"gsc_client_id","description":"Google OAuth client ID"},{"type":"promptString","id":"gsc_client_secret","description":"Google OAuth client secret","password":true},{"type":"promptString","id":"gsc_refresh_token","description":"Google OAuth refresh token","password":true}]}Check it with MCP: List Servers. VS Code MCP documentation
What you can ask it to do
Find search opportunities
Which queries and pages brought the most clicks this month?
Which pages lost clicks compared with the previous period?
Show queries containing
mcpwhere average position is below 10.
Check index status and sitemaps
Is this URL indexed? Show coverage, crawl and canonical information.
Which submitted sitemaps have errors or warnings?
Resubmit this sitemap after showing its current status.
Manage properties carefully
List the Search Console properties I can access.
Add this exact property value; I will verify ownership separately.
Remove this property from my account after confirmation.
How Search Console properties work
A URL-prefix property must include its protocol and trailing slash, for example https://example.com/. A domain property is written as sc-domain:example.com. A near-match causes 403 or 404, so use the exact value returned by list_sites.
add_site only registers a property. Verification remains in the Search Console UI or Site Verification API. Search data uses Pacific Time; end_date is inclusive and final analytics data typically lags by two to three days. data_state: "all" can include fresher, still-changing rows.
What can change
Operation | What happens | Confirmation boundary |
List properties, analytics, sitemaps and URL status | Reads Search Console data | No change |
Add a property | Adds a property entry; does not verify it | Changes account access |
Submit or resubmit a sitemap | Requests processing of a sitemap | Changes Search Console state |
Delete a property | Unlinks the property from the account; Google data is not deleted | Destructive |
Delete a sitemap | Removes a submitted sitemap | Destructive |
Raw API request | May call a write or delete endpoint | Potentially destructive |
The AI client controls confirmation prompts. The server marks reads, writes and destructive calls so the client can distinguish an inspection from a real change.
Getting access
Search Console data requires Google OAuth 2.0; an API key is not enough.
Create or select a Google Cloud project and enable Google Search Console API.
Configure the OAuth consent screen and create a Desktop app OAuth client.
Use the OAuth 2.0 Playground with Use your own OAuth credentials to authorize the Google account that can access the properties and obtain a refresh token.
Use
https://www.googleapis.com/auth/webmastersto include sitemaps and property changes. Usehttps://www.googleapis.com/auth/webmasters.readonlyonly if you intentionally need read-only access.
Testing-mode refresh tokens can expire after seven days. Publish the OAuth app, or use an Internal Workspace app, for long-lived access. Treat the client secret and refresh token as passwords.
Configuration
Variable | Required | Description |
| Yes* | OAuth client ID. |
| Yes* | OAuth client secret. |
| Yes* | OAuth refresh token. |
| Yes* | Short-lived alternative to the OAuth trio. |
| No | API base URL override. |
| No | Per-request timeout; default |
| No | Temporary-error retries; default |
* Provide either the OAuth trio or an access token.
Data, limits and background work
Privacy. The local server calls Google and sends anonymous telemetry with an installation ID, versions and tool names — never OAuth tokens, property data, tool arguments or prompts. Set
ASKADS_TELEMETRY=0to opt out.API limits. URL inspection allows 2,000 inspections per property per day and 600 per minute. Analytics returns at most 25,000 rows per request; long-tail anonymized queries are never returned. Use pagination and do not inspect whole sites URL by URL.
No background monitoring. The server works only while called. If your AI app supports scheduled tasks, it can periodically check a sitemap or an important URL.
Technical documentation
MCP capability catalog — task-oriented pages for every tool.
Support
Found a bug or need a scenario? Create an issue or write in Telegram.
Available Tools
12 toolsadd_siteAdd a propertyAIdempotent
Adds a property to the account's Search Console set. The property starts UNVERIFIED (permissionLevel siteUnverifiedUser) and most data calls will return 403 until it is verified — verification happens through the Search Console UI or the separate Site Verification API, not through this API. Success is an empty API response (surfaced as { ok: true, added }). Requires the full webmasters OAuth scope (the readonly scope cannot mutate).
| Name | Required | Description | Default |
|---|---|---|---|
| site_url | Yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different properties), or domain property — "sc-domain:example.com" (no scheme, no slash). A mismatched value returns 403/404; list_sites shows the exact registered values. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with annotations available (readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description adds substantial behavioral context: the property starts UNVERIFIED with a specific permission level, data calls will 403 until verification, success returns an empty API response, and the required OAuth scope is stated. This goes well beyond annotation signals.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly packed paragraph that front-loads the action and then efficiently delivers critical caveats (verification, response shape, scope requirement). Every sentence earns its place without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully explains the expected success response and the unverified-state behavior. It covers the mutation, prerequisites, failure modes, and permissions, making it complete for a one-parameter tool with good annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage for the single parameter (site_url) is 100%, including format examples and error notes. The tool description itself does not repeat or add parameter-level detail, so it does not elevate above the schema's already-complete documentation. A baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Adds a property to the account's Search Console set,' which uses a specific verb and resource, clearly distinguishing it from sibling tools like list_sites, get_site, and delete_site. It also immediately conveys the key scope of the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides robust usage guidance: it states that adding a property is not sufficient for data access, explicitly notes that verification happens through the UI or a separate API, warns that most data calls will return 403 until verified, and clarifies that the readonly OAuth scope cannot mutate. These are clear when-to-use and when-not-to-use directives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_siteRemove a propertyADestructiveIdempotent
Removes (unlinks) a property from the account's Search Console set. No data is deleted and other owners keep their access — this only removes the property from THIS account's list; it can be re-added later. Success is an empty API response (surfaced as { ok: true, removed }). Requires the full webmasters OAuth scope.
| Name | Required | Description | Default |
|---|---|---|---|
| site_url | Yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different properties), or domain property — "sc-domain:example.com" (no scheme, no slash). A mismatched value returns 403/404; list_sites shows the exact registered values. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by clarifying that no data is deleted, other owners keep access, the action is reversible (can be re-added later), and the success response format. It also specifies the required OAuth scope. This provides substantial behavioral context that annotations alone don't convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: three sentences, each adding value. It leads with the core purpose, then clarifies non-destructive behavior and success/scope details. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, full schema coverage, no output schema), the description is complete. It explains behavior, side effects, reversibility, auth requirements, and response shape, leaving no significant gaps for an agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already has 100% coverage with a detailed description of site_url, including format examples and error conditions. The tool description doesn't add anything parameter-specific beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action: 'Removes (unlinks) a property from the account's Search Console set.' It uses a specific verb and resource, and the parenthetical '(unlinks)' distinguishes this from data deletion, differentiating it from sibling tools like add_site or delete_sitemap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: it explains this only removes the property from THIS account's list, that no data is deleted, and that it can be re-added later. It also notes the required OAuth scope. It doesn't explicitly name alternatives, but it does indicate when not to use it (not for data deletion), which is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_sitemapDelete a sitemapADestructiveIdempotent
Removes a sitemap from Search Console. This does not delete the file from the site, and Google may still discover it via robots.txt — it only removes the submission. Success is an empty API response (surfaced as { ok: true, deleted }). Requires the full webmasters OAuth scope.
| Name | Required | Description | Default |
|---|---|---|---|
| feedpath | Yes | The full sitemap URL, e.g. "https://example.com/sitemap.xml". | |
| site_url | Yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different properties), or domain property — "sc-domain:example.com" (no scheme, no slash). A mismatched value returns 403/404; list_sites shows the exact registered values. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds significant behavioral context beyond the annotations: the file is not deleted, discovery may still happen, success returns an empty response, and full OAuth scope is required. It could mention idempotency given the idempotentHint, but the disclosure is already strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main action and then the important caveats. Every sentence provides necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive tool with two well-documented parameters, it covers the key aspects: purpose, side effects, authentication, and response format. It does not describe error scenarios or edge cases, but these are less critical given the idempotentHint and lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes both parameters, including detailed formats and error conditions for site_url. The description itself adds no parameter information, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Removes a sitemap from Search Console', using a specific verb and resource that clearly identifies the action. It also distinguishes itself from deleting the actual file, differentiating it from similar sitemap tools like submit_sitemap or list_sitemaps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context that this only removes the submission, not the file, and warns that Google may still discover it via robots.txt. It does not explicitly name alternative tools or state when not to use it, but the usage scope is evident from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_siteGet one propertyARead-onlyIdempotent
Returns one property's entry: { siteUrl, permissionLevel }. A 404 means the value does not match any registered property — check the exact format (trailing slash, scheme, sc-domain: prefix) against list_sites output.
| Name | Required | Description | Default |
|---|---|---|---|
| site_url | Yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different properties), or domain property — "sc-domain:example.com" (no scheme, no slash). A mismatched value returns 403/404; list_sites shows the exact registered values. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds valuable behavioral context: it returns a specific format, and a 404 indicates the input doesn't match any registered property, with guidance on checking the format. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the purpose and return format, and uses no wasteful words. Every sentence earns its place: one states the result and the other explains the 404 error and recovery action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter lookup with no output schema, the description sufficiently covers the return shape and error condition. It also points to list_sites for verifying exact formats, which completes the context. No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a highly detailed description of site_url, including exact format expectations and example values. The tool description itself does not add much parameter semantics beyond what the schema provides, but the schema is thorough, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns one property's entry with a specific structure ({ siteUrl, permissionLevel }), using the verb 'Returns' and identifying the resource as 'property's entry'. It distinguishes itself from siblings like list_sites by focusing on a single property rather than listing all, and from add_site/delete_site by being a getter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives context for when to use this tool: when you need a specific property's details and need to verify the exact format. It implicitly advises using list_sites to check registered values when a 404 occurs. However, it does not explicitly state 'use this instead of list_sites when you need a single property' or mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sitemapGet one sitemapARead-onlyIdempotent
Returns one submitted sitemap's details (the same WmxSitemap shape as list_sitemaps): errors/warnings counts, isPending, lastSubmitted/lastDownloaded, and per-content-type submitted counts. Useful to check processing status after submit_sitemap.
| Name | Required | Description | Default |
|---|---|---|---|
| feedpath | Yes | The full sitemap URL, e.g. "https://example.com/sitemap.xml". | |
| site_url | Yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different properties), or domain property — "sc-domain:example.com" (no scheme, no slash). A mismatched value returns 403/404; list_sites shows the exact registered values. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds value by enumerating the return fields (errors/warnings, isPending, timestamps) and indicating the sitemap must be submitted, which provides useful context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action and return information, and every clause contributes. The structure is efficient and free of repetition, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with strong annotations and fully documented parameters, the description provides sufficient context. It names the return shape and fields, specifies the use case, and requirements like 'submitted sitemap,' making it complete for invocation decisions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema descriptions for site_url and feedpath are detailed with examples and constraints. The description does not add additional parameter semantics; it only restates 'submitted sitemap' without altering the schema's already thorough documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns one submitted sitemap's details, explicitly listing the fields returned and the WmxSitemap shape. It distinguishes from list_sitemaps by focusing on a single sitemap and also from submit_sitemap by its read-only retrieval purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Useful to check processing status after submit_sitemap,' giving a clear when-to-use scenario. It references list_sitemaps for shape comparison, implying the alternative for listing all sitemaps, but does not explicitly state exclusions or other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_queriesTop search queriesARead-onlyIdempotent
Convenience wrapper over search_analytics for the most common ask: the top search queries for a property, sorted by clicks descending (the API's default order). Each row has keys[0] = the query string plus clicks, impressions, ctr (a FRACTION 0..1) and position. Dates are calendar dates in Pacific Time, end_date inclusive; final data lags ~2-3 days. Anonymized long-tail queries are never returned. Same endpoint and quota as search_analytics — use search_analytics directly for other dimensions, pagination, fresh data or regex filters.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many top queries to return (1..25000; default 100). | |
| device | No | Only count traffic from this device class. | |
| country | No | Only count traffic from this country — ISO 3166-1 alpha-3 code, e.g. "usa". | |
| end_date | Yes | Last date of the range, YYYY-MM-DD, Pacific Time, inclusive. | |
| site_url | Yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different properties), or domain property — "sc-domain:example.com" (no scheme, no slash). A mismatched value returns 403/404; list_sites shows the exact registered values. | |
| start_date | Yes | First date of the range, YYYY-MM-DD, Pacific Time. | |
| page_filter | No | Only count traffic to pages whose URL CONTAINS this substring, e.g. "/blog/". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavioral context beyond the read-only/idempotent annotations: data lag of 2-3 days, Pacific Time calendar dates, ctr reported as a fraction, anonymized long-tail queries not returned, and same quota as search_analytics. No contradiction with annotations; the description enriches the operational expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: purpose, output row format, timezone and lag, anonymization caveat, and alternative usage are packed into a tight paragraph. Well front-loaded and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description covers the return row structure (keys[0] as query string, metrics), date handling, data lag, quota behavior, and exclusions. For a tool with 7 parameters and no output schema, this is unusually complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions on all parameters, so the description need not repeat them. It does not add meaning beyond the schema for parameters; the row structure note refers to output, not parameter semantics. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a convenience wrapper for retrieving top search queries, sorted by clicks descending. It explicitly differentiates itself from the sibling search_analytics tool by naming it and scoping the purpose to 'the most common ask.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use and when-not-to-use guidance: 'use search_analytics directly for other dimensions, pagination, fresh data or regex filters.' This directly addresses alternatives and exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_urlInspect a URL's index statusARead-onlyIdempotent
Inspects a URL's status in the Google index (URL Inspection API). Returns { inspectionResult } with: inspectionResultLink (the Search Console UI page for this inspection); indexStatusResult — verdict (PASS/PARTIAL/FAIL/NEUTRAL), human-readable coverageState (e.g. "Submitted and indexed"), robotsTxtState (ALLOWED/DISALLOWED), indexingState, lastCrawlTime, pageFetchState (SUCCESSFUL/SOFT_404/NOT_FOUND/SERVER_ERROR/...), googleCanonical vs userCanonical, sitemap[], referringUrls[], crawledAs (DESKTOP/MOBILE); plus ampResult and richResultsResult (with per-item issues and severities) when applicable. Only the status of the version already in the Google index is returned — this is NOT a live test. mobileUsabilityResult may still appear in responses but the product is retired — ignore it. QUOTA WARNING: only 2,000 inspections per property per DAY (and 600/minute) — throttle any batch inspection and expect 429/403 rateLimitExceeded beyond that.
| Name | Required | Description | Default |
|---|---|---|---|
| site_url | Yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different properties), or domain property — "sc-domain:example.com" (no scheme, no slash). A mismatched value returns 403/404; list_sites shows the exact registered values. | |
| language_code | No | IETF BCP-47 language for the human-readable issue messages, e.g. "en-US" (the default). | |
| inspection_url | Yes | The fully-qualified URL to inspect. It must belong to the property given in site_url. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly=true, idempotent=true, destructiveHint=false), the description adds significant behavioral details: quota limits (2,000/day and 600/min), the retired mobileUsabilityResult field, the distinction between indexed and live status, and the potential for 429/403 errors. This rich context goes far beyond what annotations provide and helps the agent anticipate real-world behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place. It begins with a clear purpose, then details the return structure (essential since there is no output schema), and ends with practical usage warnings. The information is well-organized and front-loaded, making it easy for an agent to quickly grasp the tool's function and constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the return object and the absence of an output schema, the description is remarkably complete. It enumerates all major response fields, explains the non-live nature, flags deprecated fields, and provides quota guidance. This fully equips an agent to invoke the tool correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides complete descriptions for all three parameters, including formats and examples (e.g., site_url format, language_code default). The description does not add any parameter-specific semantics beyond what the schema covers, so a baseline score of 3 is appropriate given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool inspects a URL's status in the Google index via the URL Inspection API. It specifies the resource ('URL'), the action ('inspects'), and the scope ('status in the Google index'), distinguishing it from sibling tools that manage sites or sitemaps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool, including a caveat that it returns only the currently indexed version and is NOT a live test. It also includes a quota warning, guiding agents to throttle batch inspections. However, it does not explicitly mention alternative tools or when NOT to use it beyond the live-test exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sitemapsList sitemapsARead-onlyIdempotent
Lists the sitemaps submitted for a property (or, with sitemap_index, the children of a sitemap index file). Returns { sitemap: [WmxSitemap] } with per-sitemap path, lastSubmitted, lastDownloaded, isPending, isSitemapsIndex, type (sitemap/rssFeed/atomFeed/patternSitemap/urlList/notSitemap), warnings and errors counts, and contents[] with per-content-type submitted counts. The contents[].indexed field is deprecated and returns nothing useful — never present it as indexed pages.
| Name | Required | Description | Default |
|---|---|---|---|
| site_url | Yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different properties), or domain property — "sc-domain:example.com" (no scheme, no slash). A mismatched value returns 403/404; list_sites shows the exact registered values. | |
| sitemap_index | No | URL of a sitemap index file — lists its child sitemaps instead of the property's own list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint, etc.), the description discloses detailed behavioral traits: the exact return shape, the meaning of per-sitemap fields, and a critical deprecation warning about contents[].indexed. This adds significant transparency and does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence that conveys the core purpose, conditional behavior, return shape, field details, and a deprecation advisory. It is efficient but not as cleanly structured as a two-sentence example, hence a slight deduction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description fully explains the return values and important nuances. It also covers error behavior indirectly through the schema (site_url mismatch) and the deprecated field warning, making it complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already provides thorough parameter descriptions for site_url and sitemap_index. The description does not add new parameter semantics beyond what the schema captures, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb ('Lists') and resource ('sitemaps submitted for a property'), and further specifies the conditional behavior with sitemap_index. It distinguishes from sibling tools like submit_sitemap and delete_sitemap by focusing on reading/listing rather than mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly clarifies when to use the tool (to list submitted sitemaps) and adds a specific use case for sitemap_index (listing children). However, it does not explicitly mention alternatives or exclusions, so it lacks full when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sitesList Search Console propertiesARead-onlyIdempotent
Lists every Search Console property the authenticated account can access. Returns { siteEntry: [{ siteUrl, permissionLevel }] } where siteUrl is either a URL-prefix property ("https://example.com/") or a domain property ("sc-domain:example.com"), and permissionLevel is siteOwner, siteFullUser, siteRestrictedUser or siteUnverifiedUser. Call this FIRST: every other tool needs the siteUrl exactly as returned here — a near-match (missing trailing slash, wrong scheme, www vs non-www) is a different property and returns 403/404.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, but the description adds rich context: the return structure (siteEntry with siteUrl and permissionLevel), the two property types, and the critical exact-match requirement causing 403/404. This goes beyond what annotations provide and prepares the agent for real-world usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (3 sentences) and well-structured: the main action first, then the return format, then the critical usage warning. Every sentence adds important information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and no parameters, the description fully specifies the return structure, the possible permissionLevel values, and the important exact-match caveat. It even warns of 403/404 errors. For a zero-parameter list tool, this is complete and actionable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema is fully covered. The description instead explains the meaning of return values (siteUrl, permissionLevel) and their possible enumerated values, which is useful for downstream tools that need siteUrl. No parameter explanation is required, but the return semantics compensate well. Baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Lists every Search Console property the authenticated account can access.' This uses a specific verb+resource and directly distinguishes it from siblings like get_site by emphasizing 'every' property. The title and description align, and the return format is specified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: 'Call this FIRST: every other tool needs the siteUrl exactly as returned here.' This tells the agent when to use this tool before others and warns about the consequences of near-matches. No alternative is mentioned, but the instruction is unambiguous and valuable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
raw_requestRaw Search Console API callADestructive
Escape hatch to call any Google Search Console API path directly, for requests the typed tools don't cover. Two surfaces share the host: "webmasters/v3/..." (sites, sitemaps, searchAnalytics) and "v1/..." (urlInspection). siteUrl and feedpath are PATH SEGMENTS and must be URL-encoded (encodeURIComponent), e.g. "webmasters/v3/sites/sc-domain%3Aexample.com/sitemaps". The path may carry a query string. The Bearer token is added automatically; the method defaults to GET. Note: sites.add and sitemaps.submit are PUT with no body and return an empty response on success.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON request body (POST only; PUT endpoints here take no body). | |
| path | Yes | API path relative to https://searchconsole.googleapis.com, e.g. "webmasters/v3/sites" or "v1/urlInspection/index:inspect". | |
| method | No | HTTP method (the Search Console API uses only these four). Defaults to GET. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true, setting the safety baseline. The description adds useful non-obvious behaviors: the Bearer token is added automatically, the method defaults to GET, and specific endpoints (sites.add, sitemaps.submit) are PUT with no body and return an empty response on success. This enriches the agent's understanding beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact—roughly three sentences—and front-loaded with the core 'escape hatch' purpose. Every sentence adds value: path format, URL encoding, query strings, auth, default method, and PUT endpoint notes. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is an open-ended raw API tool, the description covers the essentials: usage scope, path encoding, auth, method defaults, and specific endpoint quirks. There is no output schema, but the tool's raw passthrough nature makes return format self-evident. The description is sufficient for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already has 100% coverage, but the description goes further by explaining that siteUrl and feedpath are path segments requiring encodeURIComponent, that paths may include query strings, and clarifies body usage (POST only, PUT endpoints take no body). This added semantics is critical for correctly constructing the path parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Escape hatch to call any Google Search Console API path directly', which states a specific verb ('call') and resource ('any Google Search Console API path'), clearly distinguishing it from the typed sibling tools. The title 'Raw Search Console API call' reinforces this purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'for requests the typed tools don't cover', which tells the agent when to use this tool versus the typed alternatives. It also explains that there are two API surfaces ('webmasters/v3/...' and 'v1/...') and provides an example path, giving clear contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_analyticsSearch Analytics (performance) queryARead-onlyIdempotent
Runs a Search Analytics (performance) query for a property: clicks, impressions, CTR and average position from Google Search, grouped by the requested dimensions. Each returned row has keys[] (one value per requested dimension, in the same order) plus clicks, impressions, ctr (a FRACTION 0..1, not a percent) and position; rows are sorted by clicks descending. With no dimensions you get one totals row for the range. Dates are calendar dates in Pacific Time and end_date is INCLUSIVE; final data lags ~2-3 days behind (use data_state "all" for fresh, still-changing rows). Pagination: there is no page token — repeat with start_row increased by row_limit until a response comes back with no rows. When grouping by query/page some anonymized long-tail data is never returned, so summed rows will not match a dimensionless totals query. Quota: 1,200 queries/minute per site and per user.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | Row filters, ALL combined with AND — the API has no OR across filters (run separate queries instead). | |
| end_date | Yes | Last date of the range, YYYY-MM-DD, Pacific Time, inclusive. | |
| site_url | Yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different properties), or domain property — "sc-domain:example.com" (no scheme, no slash). A mismatched value returns 403/404; list_sites shows the exact registered values. | |
| row_limit | No | Max rows to return (1..25000; API default 1000). | |
| start_row | No | 0-based row offset for pagination (default 0). A response with no rows means the end. | |
| data_state | No | "final" (default) — only finalized data; "all" — include fresh data still subject to change; "hourly_all" — required when grouping by hour (recent data only). | |
| dimensions | No | How to group rows; keys[] in each row follows this order. "country" values are ISO 3166-1 alpha-3 codes, "device" is DESKTOP/MOBILE/TABLET, "hour" requires data_state "hourly_all". Omit for one totals row. | |
| start_date | Yes | First date of the range, YYYY-MM-DD, Pacific Time. | |
| search_type | No | Which search surface to report: "web" (default), "image", "video", "news" (News tab of search), "discover" (Discover feed), "googleNews" (news.google.com and the app). discover/googleNews support a reduced dimension set — an unsupported combination returns the API's 400 verbatim. | |
| aggregation_type | No | How metrics are aggregated: "auto" (default) lets the API decide, "byPage"/"byProperty" force it, "byNewsShowcasePanel" is for News Showcase. Affects how clicks/impressions are counted, not which rows exist. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and open-world behavior. The description adds valuable behavioral context beyond annotations: 2-3 day data lag, inclusive Pacific Time dates, pagination behavior (no page token, loop until empty), long-tail data anonymization, and the 1,200 qpm quota. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence carries useful information. It opens with the core purpose, then progressively details output, date semantics, pagination, data caveats, and quota. No filler or repetition; the structure front-loads the most important information and then covers edge cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a 10-parameter tool with no output schema, so the description must explain both request nuances and return shape. It covers row structure, sorting, pagination, dimension effects, data lag, and quota. Combined with the 100% schema coverage, the agent has everything needed to invoke and interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though schema descriptions cover 100% of parameters, the description adds semantic depth: explains keys[] ordering, ctr fraction, inclusive end_date, pagination with start_row/row_limit, why data_state 'all' matters, and the grouping caveat that summed rows won't match totals. These clarifications go well beyond schema property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Runs a Search Analytics (performance) query for a property' with specific metrics (clicks, impressions, CTR, position) and grouping by dimensions. It distinguishes itself from siblings like list_sites or get_top_queries by focusing on the full analytics query capability, and even explains output row structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides rich usage context: how to get a totals row (no dimensions), pagination via start_row/row_limit, data_state selection for fresh data, and the caveat about anonymized data when grouping by query/page. However, it does not explicitly mention when to choose this tool over alternatives like get_top_queries, so it stops short of full 'when-not' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_sitemapSubmit a sitemapAIdempotent
Submits (or resubmits) a sitemap for the property. The feedpath must be the sitemap's full URL on the property. Success is an EMPTY API response (surfaced as { ok: true, submitted }); processing is asynchronous — check errors/warnings later with get_sitemap. Requires the full webmasters OAuth scope (readonly is not enough).
| Name | Required | Description | Default |
|---|---|---|---|
| feedpath | Yes | The full sitemap URL, e.g. "https://example.com/sitemap.xml". | |
| site_url | Yes | The property EXACTLY as registered in Search Console. Two formats: URL-prefix — a full URL with scheme and trailing slash, e.g. "https://example.com/" (http/https and www/non-www are different properties), or domain property — "sc-domain:example.com" (no scheme, no slash). A mismatched value returns 403/404; list_sites shows the exact registered values. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable details beyond annotations: the empty API response shape, asynchronous processing, and the need for full OAuth scope. These are pragmatic behavioral insights that help the agent anticipate outcomes and requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with action and scope. Every sentence adds value: the action, the feedpath constraint, the response behavior, the asynchronous nature, the follow-up tool, and the auth requirement. No redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two parameters and no output schema, this description is complete. It covers purpose, response format, async processing, OAuth requirement, and the recommended follow-up. The rich schema examples further fill in any remaining context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides comprehensive descriptions for both parameters (feedpath format and site_url formats with examples). The description only restates the feedpath requirement ('full URL on the property') without adding new semantics, so it does not rise above the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Submits (or resubmits) a sitemap for the property') with a specific verb and resource. It distinguishes from sibling tools like list_sitemaps, get_sitemap, and delete_sitemap by focusing on the submission operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to use the tool and a follow-up action ('check errors/warnings later with get_sitemap'), plus an important prerequisite (full OAuth scope). It does not explicitly contrast with alternatives, but the purpose is distinct enough that the usage is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
v0.1.0- First observed
add_site - First observed
delete_site - First observed
delete_sitemap - First observed
get_site - First observed
get_sitemap - First observed
get_top_queries - First observed
inspect_url - First observed
list_sitemaps - First observed
list_sites - First observed
raw_request - First observed
search_analytics - First observed
submit_sitemap
TDQS
Scored across 12 tools
Each tool targets a distinct resource and action: site CRUD, sitemap CRUD, analytics query, a convenience wrapper for top queries, URL inspection, and a raw escape hatch. The only potential overlap (search_analytics vs get_top_queries) is explicitly documented as a convenience wrapper, making selection unambiguous.
Most tools follow a consistent verb_noun pattern (e.g., list_sites, add_site, delete_sitemap, inspect_url), but 'search_analytics' and 'raw_request' deviate from that pattern. The naming remains predictable and readable overall.
With 12 tools, the set is well-scoped for the Search Console API, covering site management, sitemap management, analytics, URL inspection, and a fallback request tool. This is within the ideal range and each tool earns its place.
The tool set provides full lifecycle coverage for sites and sitemaps (list/get/add/delete, list/get/submit/delete), offers both raw analytics and a convenience wrapper for top queries, includes URL inspection, and provides a raw_request escape hatch for any uncovered endpoints. No major gaps exist.
Maintenance
Related MCP Connectors
MCP server for Google search results via SERP API
SEO MCP server for keyword research, SERP analysis, audits, and Search Console workflows.
Google Ads MCP server — manage campaigns, keywords, and metrics.
Serper MCP — wraps the Serper Google Search API (serper.dev)
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP Server that provides access to Google's Search Console API, allowing users to interact with website search performance data and manage search presence through natural language.-
- AlicenseNot gradedqualityAmaintenanceMCP server for Google Search Console, enabling querying search analytics, URL inspection, sitemap management, and more via natural language.351 npm1MIT
- AlicenseNot gradedqualityDmaintenanceThis MCP server provides LLMs with programmatic access to Google Search Console data and functionality, including search analytics, sitemap management, site management, and URL inspection.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that exposes the Google Search Console API, allowing LLMs to query SEO data, inspect URLs, manage sitemaps, and analyze search performance via natural language.66 npmMIT