Google Search Console MCP
Provides tools to access Google Search Console data, including search performance (queries, pages, impressions, clicks, rankings), period comparisons, URL inspection, sitemap management, and property management.
Click on "Install 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 MCPwhat did we lose traffic on last month, and 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
Give any AI agent real access to what Google Search actually recorded about your sites. Queries, pages, impressions, rankings, indexing, sitemaps, from Claude Code, Claude Desktop, claude.ai, Cursor, Codex, or any MCP client.
Built by Navid Moazzez.
You: what did we lose traffic on last month, and why?
Claude: Comparing the last 28 days to the 28 before.
Clicks fell 18%, from 4,210 to 3,455. Impressions barely moved,
so this is a ranking and click-through problem, not a demand one.
Almost all of it is one page. /guides/setup went from position
3.1 to 8.4 and lost 620 clicks on its own. Everything else is flat.
I inspected it. Google is indexing it, but the canonical it picked
is /guides/setup?ref=nav, not the clean URL. That split happened
around the 14th.
Want me to look at what changed in the nav that week?Contents
Section | ||
1 | Real prompts, not features | |
2 | Node, one command | |
3 | Getting a Google credential | |
4 | Every client, copy and paste | |
5 |
| |
6 | All 19 | |
7 | What is guarded, what is not | |
8 | The things that surprise people | |
9 | What is stored, and where | |
10 | For claude.ai | |
11 | When something breaks | |
12 | Start here if you are new |
Related MCP server: Google Search Console MCP Server
1. What you can ask it š¬
Which queries lost the most clicks this month compared to last?
Show me pages ranking between 5 and 20. Which are closest to page one?
Why is this URL not showing up in Google?
What are my top queries for the blog, US only?
Is Google still reading my sitemap?
We just launched 30 pages. Check which ones are indexed.
Which of my pages get impressions but almost no clicks?
Add this new domain to Search Console and verify it.
Compare mobile against desktop for the last quarter.
The first one is the point. "What changed" is the question anyone actually has, and Search Console's own interface makes you export two reports and join them in a spreadsheet to answer it. Here it is one call, with the deltas already computed.
2. Quick install ā”
Node 20 or newer. Nothing else.
npx -y @thenavidm/google-search-console-mcp@latest --versionThat is the whole install. npx fetches it on demand, so there is nothing to update later.
3. Setup š
You need a Google credential. Google does not hand out Search Console access without a Google Cloud project, so there is a real setup here: about five minutes, once.
The full walkthrough is in references/setup.md. Every click, both routes, and what each error means.
Have an agent do it
The agent cannot sign in to Google for you. Only you can. What it can do is walk you through the console, wire up your client config, and check the connection.
Paste this into Claude Code, Cursor, or any agent with terminal access:
Set up @thenavidm/google-search-console-mcp for me.
1. Read https://github.com/navidmoazzez/google-search-console-mcp/blob/main/references/setup.md
2. Walk me through the Google Cloud steps one at a time. Stop and wait
for me after each one. Do not skip the part about publishing the
OAuth app: it is why these break after a week.
3. When I give you the client ID and secret, run `login` and then
`doctor`, and tell me what properties it can see.
4. Then add it to my MCP client config.The one step people skip
While your OAuth app's publishing status is Testing, Google issues refresh tokens that expire after 7 days. Everything works, and then a week later it stops for no visible reason.
Click Publish app on the Audience page during setup. The setup guide covers where that is and why the verification warning does not apply to you.
Signing in
export GSC_CLIENT_ID="...apps.googleusercontent.com"
export GSC_CLIENT_SECRET="GOCSPX-..."
npx -y @thenavidm/google-search-console-mcp@latest loginA browser opens, you pick your Google account, and the refresh token is saved to ~/.google-search-console-mcp/tokens.json.
For a server or CI with no browser, use a service account instead. Both routes are in the setup guide.
4. Connect your client š
Claude Code
claude mcp add google-search-console \
-e GSC_CLIENT_ID=your-client-id \
-e GSC_CLIENT_SECRET=your-client-secret \
-- npx -y @thenavidm/google-search-console-mcp@latestAdd --scope user to make it available in every project rather than just this one.
Claude Desktop
Platform | Config file |
macOS |
|
Windows |
|
{
"mcpServers": {
"google-search-console": {
"command": "npx",
"args": ["-y", "@thenavidm/google-search-console-mcp@latest"],
"env": {
"GSC_CLIENT_ID": "your-client-id",
"GSC_CLIENT_SECRET": "your-client-secret"
}
}
}
}Tip Claude Desktop does not inherit your shell PATH. If it cannot find
npx, use the absolute path fromwhich npx.
Quit Claude Desktop completely and reopen it. Closing the window is not enough.
Cursor
.cursor/mcp.json, same JSON shape as Claude Desktop, same mcpServers key.
Windsurf
~/.codeium/windsurf/mcp_config.json, same shape, same mcpServers key.
VS Code
.vscode/mcp.json. The key here is servers, not mcpServers, and each entry needs "type": "stdio".
{
"servers": {
"google-search-console": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@thenavidm/google-search-console-mcp@latest"],
"env": {
"GSC_CLIENT_ID": "your-client-id",
"GSC_CLIENT_SECRET": "your-client-secret"
}
}
}
}Codex CLI
~/.codex/config.toml:
[mcp_servers.google-search-console]
command = "npx"
args = ["-y", "@thenavidm/google-search-console-mcp@latest"]
[mcp_servers.google-search-console.env]
GSC_CLIENT_ID = "your-client-id"
GSC_CLIENT_SECRET = "your-client-secret"Gemini CLI
~/.gemini/settings.json, same mcpServers shape as Claude Desktop.
Everything else
Any stdio MCP client needs the same three things: the command npx, the args array, and the env block.
5. Check it worked š©ŗ
npx -y @thenavidm/google-search-console-mcp@latest doctorIt reports the Node version, which credential is in use, whether a token can actually be minted, how many properties that account reaches, whether verification is available, and which safety switches are on.
ā Signed-in accounts
you@example.com (stored at ~/.google-search-console-mcp/tokens.json)
ā Token
Got a live token for you@example.com via oauth.
ā Search Console access
4 properties, 4 writable. First: sc-domain:example.comTwo things account for almost every failure, and doctor names both: zero properties means you signed in with the wrong Google account, and a refresh failure a week after setup means the OAuth app is still in Testing.
6. Tools š ļø
Nineteen tools. The five marked ā are writes and disappear under GSC_READ_ONLY=1.
Search performance
Tool | What it does |
| The queries bringing the most clicks, with CTR and average position |
| The pages earning the most clicks |
| Two equal windows side by side, deltas already computed |
| Queries ranking 5 to 20, sorted by impressions left on the table |
| The full report, any dimensions, filters and date range |
compare_periods and striking_distance are the two you cannot get from the API in one call and cannot build in the UI at all without exporting to a spreadsheet.
Indexing
Tool | What it does |
| What Google knows about one URL: indexed, canonical, last crawl, rich results |
| The same for a batch, as a compact table |
Sitemaps
Tool | What it does |
| Every submitted sitemap, when Google last read it, URL counts, errors |
| Details for one |
ā | Submit or resubmit. The only recrawl signal the API can send |
ā | Stop tracking one. Needs |
Properties
Tool | What it does |
| Every property this account reaches, with permission level. Start here |
| One property and the permission held on it |
ā | Register a new property, unverified |
ā | Remove a property. Needs |
| Which Google accounts are signed in, and which is the default |
Verification
Tool | What it does |
| Mint the DNS, meta or file token that proves ownership |
ā | Claim ownership once the token is live |
| Everything this account has verified, wider than the property list |
Verification needs the browser sign-in. A service account cannot verify a property, because verification is tied to a human Google account.
7. Working safely š”ļø
Writes work by default. Publishing a sitemap is the point of having the tool, and a server where every write needs a flag just teaches you to set the flag once and forget it.
Three mechanisms do the job instead.
confirm: true on the two irreversible tools. delete_site and delete_sitemap. Not on submit_sitemap or add_site: both are trivially undone, and asking for confirmation on everything trains the reflex that defeats asking at all.
GSC_READ_ONLY=1 removes writes entirely. They are not registered, so they never appear in the tool list. A model cannot call a tool it cannot see. This is the right setting for an agent working unattended.
GSC_ALLOW_DESTRUCTIVE=0 keeps submit_sitemap and add_site while dropping the two deletes.
GSC_AUDIT_LOG=<path> writes one JSON line per attempted write, allowed and failed alike.
Every tool carries MCP annotations so your client can decide what to auto-approve:
|
| |
Reads | true | false |
| false | false |
| false | true |
On prompt injection. A search query is whatever a stranger typed into Google, and a title read through URL inspection is whatever that page says. Both reach your model's context. Text from those fields is framed as data rather than instructions, which helps and is not a guarantee. For an agent running unattended against sites you do not control, GSC_READ_ONLY=1 is the real defence.
8. What Search Console actually does š
The things that cost people an afternoon.
Data lags two to three days. Ask for "the last 7 days ending today" and the last few are empty or partial. Every tool here with a default window already ends three days back and tells you the dates it used. Pass data_state: "all" to query_search_analytics if you want the partial days anyway.
The query breakdown never sums to the site total. Google withholds rare queries to protect the people who typed them, so a per-query report always shows fewer clicks than the property total for the same window. That gap is anonymised traffic, not missing traffic, and it is normally larger than people expect.
A property is not a website. https://example.com/ and sc-domain:example.com are two different properties with different data, and https://example.com without the trailing slash is not a valid property string at all. Passing the wrong shape returns "User does not have sufficient permission", which reads like a scope problem and sends people back to the consent screen. Run list_sites and copy exactly. These tools normalize what they can.
Average position is a rank, so lower is better. Position moving from 8 to 5 is an improvement. compare_periods returns position_delta already signed so positive always means better, because "position went up" is ambiguous in the exact place it matters most.
There is no "request indexing" endpoint. The button exists in the UI; Google exposes no API behind it. Resubmitting a sitemap is the only recrawl signal available programmatically. Anything claiming otherwise is either using the Indexing API, which only works for job postings and livestreams, or it is not doing what it says.
About 16 months of history. Ask for more and you get what exists, silently.
Quotas are per property, not per token. Roughly 1200 search analytics queries per minute, and about 2000 URL inspections per day with 600 per minute. inspect_urls paces itself, but a loop over a large site will hit the daily ceiling.
Discover and Google News are different surfaces. Pass type: "discover" and there is no query dimension and no device dimension at all. Asking for one returns an error rather than empty rows.
9. Your data š
There is no backend. Nothing is sent anywhere except Google.
What | Where |
Refresh token, one per signed-in account |
|
Audit log, only if you set | Wherever you point it |
GSC_TOKEN_STORE moves the token file. logout <email> deletes an entry from it, and myaccount.google.com/permissions revokes Google's side, which is the half that actually matters.
Search Console data is read on demand and never cached to disk.
10. Running it on a server š
claude.ai runs connectors from Anthropic's cloud, not from your machine, so it cannot start a local command. It needs a public HTTPS URL, which means the HTTP transport.
npx -y @thenavidm/google-search-console-mcp@latest --http --port 8000That binds 127.0.0.1. To bind anything else you must set GSC_HTTP_TOKEN, and the server refuses to start without it:
export GSC_HTTP_TOKEN="$(openssl rand -hex 32)"
npx -y @thenavidm/google-search-console-mcp@latest --http --host 0.0.0.0 --port 8000The refusal is deliberate. Whatever can reach that port can read your site's entire search history and delete its properties.
Then in claude.ai: Customize, Connectors, +, Add custom connector, and paste the HTTPS URL ending in /mcp. On Team and Enterprise an owner adds it under Organization settings, Connectors first.
There is a Dockerfile if you would rather run it that way.
11. Troubleshooting š§
Start with doctor. It checks each failure mode separately and names the fix.
What you see | What it is |
Worked for a week, then every call fails | The OAuth app is still in Testing status, so Google expired the refresh token at 7 days. Publish the app and run |
| Wrong property string. |
| Signed in with a Google account that owns none. On a service account, its email was never added under Settings, Users and permissions on each property. |
| The API is switched off in your Google Cloud project. Enable it. |
|
|
Empty results for the last few days | The two to three day data lag. Use |
Fewer clicks per query than the site total | Expected. Google withholds rare queries. |
Claude Desktop cannot find | It does not inherit your shell PATH. Use the absolute path from |
Write tools missing from the tool list |
|
12. FAQ ā
An MCP server is a standard way to give an AI assistant real access to a tool, so it can act instead of guessing. You install it once, your assistant gains a set of tools, and it works in Claude, Cursor, Codex and anything else that speaks MCP.
Without one, an assistant asked about your search traffic can only tell you how Search Console works in general. With one, it reads your actual numbers.
Google Search Console is Google's free tool for site owners. It shows what people searched before they landed on your site, which pages Google shows and where they rank, which pages Google has and has not indexed, and what it thinks is broken.
It is the only place Google tells you any of this. Analytics tells you what people did once they arrived; Search Console tells you what happened in Google before that.
You need to be comfortable pasting commands into a terminal and clicking through a few pages in Google Cloud. The setup guide covers every click, and the prompt in section 3 hands the whole thing to an agent that walks you through it one step at a time.
The Google Cloud part is the hard bit, and it is a one-time five minutes.
There is no backend and no telemetry. The server runs on your machine, talks to Google, and returns the answer to your AI client. The only thing written to disk is your refresh token, at ~/.google-search-console-mcp/tokens.json with 600 permissions.
Your search data does reach whichever AI model you are using, because that is the point. If that matters for a particular site, do not connect it.
There are two things the UI cannot do at all, and one it does slowly.
Comparing two periods with per-query deltas is an export-and-spreadsheet job in the UI. Here it is one call. Finding every query ranking between 5 and 20, ordered by impressions, is the same story.
Everything else it does faster: checking 30 URLs after a launch is 30 clicks in the UI and one call here.
Two tools can delete something. delete_site removes a property from your account, and delete_sitemap stops Search Console tracking a sitemap. Both refuse to run without confirm: true.
Neither touches your website, and neither removes anything from Google's index. delete_site loses your account's access to that property's history until it is re-added and re-verified.
Set GSC_READ_ONLY=1 and both disappear from the tool list entirely.
It costs nothing. The server is MIT licensed, Search Console is free, and the Google Cloud project you create is free. There is no card required and no billing to enable.
Your AI assistant costs whatever it already costs.
It works with any MCP client. Section 4 has copy-paste config for Claude Code, Claude Desktop, Cursor, Windsurf, VS Code, Codex CLI and Gemini CLI.
claude.ai is the one that works differently: it runs connectors from Anthropic's cloud rather than your machine, so it needs the HTTP transport and somewhere to host it. See section 10.
You can connect as many as you like. Run login again with a different account and both are stored. Every tool takes an optional account argument taking an email, and list_accounts shows what is signed in.
Useful when your own sites and a client's sit under different Google logins.
Access tokens last an hour and are refreshed automatically. You should never notice.
The exception is the one worth knowing: while your OAuth app's publishing status is Testing, Google expires the refresh token after 7 days, and everything stops. Publishing the app fixes it permanently. Section 3 covers it.
Remove the entry from your MCP client's config, then run logout your@email.com to delete the local token.
Then revoke Google's side at myaccount.google.com/permissions. That is the half that matters: deleting the local file leaves a live grant behind.
Google offers no such endpoint. "Request indexing" exists in the Search Console UI and has no API behind it, and the Indexing API that does exist only accepts job postings and livestreams.
Resubmitting a sitemap is the only recrawl signal available programmatically, which is what submit_sitemap is for.
Questions
Run into a problem or have a question? Open an issue and I will help.
About the author
Navid Moazzez is a leading AI business strategist and the host of the AI Creator Summit, watched by 100,000+ creators. He helps creators and founders master AI and build their own AI Operating System (AI OS) to automate their business and life. This MCP server is one piece of that system.
Links
Personal website: navid.me
Store: navid.bio
Navid Media: navid.media
YouTube: @thenavidm and @thenavidai
X: @thenavidm
Instagram: @thenavidm
LinkedIn: thenavidm
Dependencies
Package | License | Why |
MIT | The MCP protocol implementation | |
MIT | Tool input schemas | |
MIT | The HTTP transport |
License
MIT. See LICENSE.
Not affiliated with, endorsed by, or sponsored by Google. Google, Google Search Console and Google Cloud are trademarks of Google LLC.
Ā© 2026 NM Media. Made with ā¤ļø by Navid Moazzez.
Available Tools
19 toolsadd_siteAIdempotent
Register a property in Search Console. This only adds it: the property stays unverified and returns no data until ownership is proven, so follow with get_verification_token and verify_site. Adding a property that is already there is a no-op rather than an error.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | The Search Console property. Either a URL-prefix property ("https://navid.me/", trailing slash included) or a domain property ("sc-domain:navid.me"). A bare hostname is read as a domain property. Call list_sites for the exact strings this account owns, because the two shapes are different properties and mixing them up returns a 403. | |
| account | No | Which signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (idempotentHint=true, readOnlyHint=false), the description discloses critical non-obvious behavior: the property remains unverified and yields no data until ownership is proven, and adding an existing property is a no-op rather than an error. This gives the agent expectations that are not derivable from the schema or annotations alone.
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 with no filler: the primary action is front-loaded, followed by the critical caveat and the idempotent no-op behavior. Every sentence contributes essential operational knowledge.
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 registration tool with two well-documented parameters, the description fully covers the workflow context by naming the exact verification follow-up tools. The absence of an output schema is acceptable because the key agent-facing concern is the unverified state, which is explicitly disclosed.
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 parameter descriptions for site and account are rich, including URL vs domain property shapes and trailing-slash conventions. The main description adds no parameter-specific meaning, but the baseline of 3 is appropriate because the schema itself carries the semantic burden.
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 a specific verb and resource ('Register a property in Search Console'), making the core action unmistakable. It further differentiates itself from verification siblings by stating 'This only adds it' and referencing get_verification_token and verify_site as follow-ups, so the agent cannot confuse it with other property-related tools.
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 clear context for use: it registers a property and explains that verification is separate, instructing to follow with get_verification_token and verify_site. It does not explicitly name alternative tools or state when NOT to use it, but the intended workflow is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_periodsARead-onlyIdempotent
Two equal windows side by side with the deltas already computed: what went up, what fell, per query, page, country or device. This is the tool for "what changed", "are we up or down" and "which pages lost traffic". The default compares the last 28 days against the 28 before them. Rows are sorted by click change, so the biggest losses are at the bottom and the biggest gains at the top.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Length of each window. | |
| site | Yes | The Search Console property. Either a URL-prefix property ("https://navid.me/", trailing slash included) or a domain property ("sc-domain:navid.me"). A bare hostname is read as a domain property. Call list_sites for the exact strings this account owns, because the two shapes are different properties and mixing them up returns a 403. | |
| type | No | Which surface to report on. Defaults to web. "discover" and "googleNews" carry no query or device dimension at all, so asking for one returns an error rather than empty rows. | |
| limit | No | Rows pulled per window before joining. | |
| account | No | Which signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in. | |
| dimension | No | query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses useful behavior beyond the annotations: rows are sorted by click change, biggest losses are at the bottom, biggest gains at the top, and the default comparison is the last 28 days against the 28 before them. It leaves exact return fields unstated, but the read-only and idempotent annotations cover the safety profile.
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?
Four sentences, each earning its place: what the tool computes, what questions it answers, the default comparison window, and row ordering. The most important information is front-loaded with 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?
For a six-parameter tool with no output schema, the description covers selection criteria, default behavior, dimensions, and output ordering. It would benefit from naming the exact returned metrics, but the schema and annotations already handle parameter types, requiredness, and safety, so the definition is largely 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 description coverage is high, so the baseline is 3. The description adds the meaningful default-window relationship that the schema's `days` property leaves implicit: the last 28 days are compared against the 28 days before them. Its dimension list mostly restates the schema enum, but the extra context justifies a 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 identifies a concrete resource and outcome: two equal date windows compared with precomputed deltas per query, page, country, or device. It also maps the tool to user intents like 'what changed' and 'are we up or down', making it easy to distinguish from the sibling analytics tools.
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 phrase 'This is the tool for' plus explicit example questions gives strong when-to-use guidance. It does not name alternatives or state when not to use it, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_siteADestructive
Remove a property from this Google account's Search Console. The site's history is no longer readable by this account until the property is re-added and re-verified, and Google does not offer an undo. Set confirm to true to proceed.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | The Search Console property. Either a URL-prefix property ("https://navid.me/", trailing slash included) or a domain property ("sc-domain:navid.me"). A bare hostname is read as a domain property. Call list_sites for the exact strings this account owns, because the two shapes are different properties and mixing them up returns a 403. | |
| account | No | Which signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in. | |
| confirm | No | Removing a property cuts this account off from its search history until it is re-added and re-verified. Set true to proceed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations: it warns that history becomes unreadable until the property is re-added and re-verified, states Google does not offer an undo, and explains the confirm flag. This is exactly the kind of destructive, irreversible context an agent needs.
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?
Two sentences, front-loaded with the core action and followed by the critical consequence and safety instruction. No filler or 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?
The description covers the irreversibility, the access loss, and the confirm requirement, which is strong for a destructive mutation. It does not describe the success/error response shape, but with no output schema and a fairly simple operation, this is a minor gap.
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%, with rich per-parameter descriptions. The description only adds "Set confirm to true to proceed," which reinforces the schema's confirm parameter without adding new parametric meaning. 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 cleanly states the action: "Remove a property from this Google account's Search Console." It names a specific verb and resource, and the term "property" distinguishes it from sibling tools like 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 purpose and consequences are clear, but the description does not explicitly say when to use this tool versus alternatives such as delete_sitemap or add_site. It implies usage through the action verb, but does not name exclusions or sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_sitemapADestructive
Stop tracking a sitemap on a property. It does not deindex the URLs the sitemap listed, and it does not delete the file. What it does lose is the submission history and per-sitemap coverage for it. Set confirm to true to proceed.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | The Search Console property. Either a URL-prefix property ("https://navid.me/", trailing slash included) or a domain property ("sc-domain:navid.me"). A bare hostname is read as a domain property. Call list_sites for the exact strings this account owns, because the two shapes are different properties and mixing them up returns a 403. | |
| account | No | Which signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in. | |
| confirm | No | Set true to proceed. The submission history for this sitemap is not recoverable. | |
| sitemap_url | Yes | Full URL of the sitemap to stop tracking. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by explaining exactly what is affected: submission history and per-sitemap coverage are lost, while the sitemap file and URL indexing are not. It also highlights the irreversible nature and the need for confirmation (confirm=true). This provides full transparency for a destructive operation.
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: it states the core action, clarifies what is not affected, notes what is lost, and instructs on confirmation. Every sentence adds meaningful 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 destructive tool with no output schema, the description thoroughly covers necessary context: the exact scope of impact, irreversibility, and the required confirmation flag. Combined with a rich parameter schema, an agent has all the information needed to invoke the tool safely and 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 input schema already provides 100% coverage with detailed descriptions for all four parameters. The tool description adds no additional parameter-level information beyond what the schema already states, 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 states a specific action ('Stop tracking a sitemap on a property'), clearly identifies the resource, and explicitly distinguishes what the tool does not do (does not deindex URLs, does not delete the file). This makes it easy to differentiate from sibling tools like submit_sitemap or delete_site.
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 clearly conveys the intended use (stopping tracking a sitemap) but does not explicitly state when to use it versus alternatives, nor does it mention any preconditions or alternative tools. The context of the destructive operation is implied, but no explicit when/when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_siteCRead-onlyIdempotent
One property and the permission level this account holds on it.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | The Search Console property. Either a URL-prefix property ("https://navid.me/", trailing slash included) or a domain property ("sc-domain:navid.me"). A bare hostname is read as a domain property. Call list_sites for the exact strings this account owns, because the two shapes are different properties and mixing them up returns a 403. | |
| account | No | Which signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations已声ęreadOnlyHint=trueådestructiveHint=falseļ¼č”ØęčæęÆäøäøŖå®å ØčÆ»ęä½ćęčæ°ę²”ęę·»å é¢å¤ēč”äøŗē»čļ¼å¦ęéč¦ę±ćåÆä½ēØļ¼ļ¼ä¹ę²”ęäøę³Øéēē¾ļ¼ē¬¦åę注éę¶ēåŗēŗæę°“å¹³ć
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?
ęčæ°éåøøē®ēļ¼ę²”ęåä½ęåļ¼ä½ē±äŗē¼ŗå°åØčÆļ¼ē»ęäøäøå®ę“ćå®ę“åäøäøŖåčÆēčÆčéåč½čÆ“ęļ¼č½ē¶ē®ę“ä½ęŖč½ęęä¼ č¾¾å·„å ·ēØéć
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?
对äŗå¦ę¤ē®åē读ęä½ļ¼ęčæ°ä» ęåč¾åŗå å«å±ę§åęéēŗ§å«ļ¼ęŖčÆ“ęå ·ä½čæåē»ęę使ēØåŗęÆćē±äŗē®ē樔ē³äøę²”ęč¾åŗschemaļ¼ę“ä½äøäøęäøå¤å®ę“ļ¼ę ę³č®©agentē”®å®č°ēØåēé¢ęē»ęć
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对siteåaccount两个åę°ę100%č¦ēļ¼čƦē»čÆ“ęäŗå±ę§å蓦å·ēę ¼å¼å注ęäŗé”¹ćęčæ°ę¬čŗ«ęŖę·»å åę°äæ”ęÆļ¼ä½schema已足å¤å åļ¼å ę¤ē»äŗåŗēŗæ3åć
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?
ęčæ°ęÆåčÆēčÆ'One property and the permission level this account holds on it.'ļ¼ē¼ŗå°ęē”®ēåØčÆļ¼å¦'Retrieves'ę'Gets'ļ¼ļ¼ęŖē“ę„诓ęå·„å ·ę§č”ēęä½ćč½ē¶ä»å·„å ·åęØęµęÆč·åē«ē¹ļ¼ä½ęčæ°ę¬čŗ«ę²”ęęø ę°č”Øč¾¾ē®ēļ¼ä¹ęŖäøå å¼å·„å ·åŗåć
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?
ęčæ°ęŖęä¾ä»»ä½å ³äŗä½ę¶ä½æēØę¤å·„å ·ęä½ę¶éę©ęæä»£å·„å ·ļ¼å¦list_sitesćget_verification_tokenļ¼ēę导ć尽箔siteåę°ēęčæ°äøęåč°ēØlist_sitesļ¼ä½čæä» ę¶ååę°å¼ļ¼čéå·„å ·éę©ēę ęÆć
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sitemapARead-onlyIdempotent
Details for one submitted sitemap: last download, last submitted, URL counts per type, and whether it is pending or errored.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | The Search Console property. Either a URL-prefix property ("https://navid.me/", trailing slash included) or a domain property ("sc-domain:navid.me"). A bare hostname is read as a domain property. Call list_sites for the exact strings this account owns, because the two shapes are different properties and mixing them up returns a 403. | |
| account | No | Which signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in. | |
| sitemap_url | Yes | Full URL of the sitemap, e.g. https://navid.me/sitemap.xml |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide the safety profile: readOnlyHint, idempotentHint, and destructiveHint false. The description adds useful return-context but no additional side-effect or authorization behavior beyond what the schema and annotations already 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?
A single front-loaded sentence that names the resource, scope, and specific returned details without wasted words. Every clause contributes information an agent needs.
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 read-only lookup, the description combined with the rich input schema covers required inputs, safety, and expected return content. There is no output schema, so the listed return fields are helpful, though exact field names are not specified.
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%, with detailed explanations for all three parameters including property formats, account defaults, and examples. The tool description itself adds no parameter-level meaning, so the baseline of 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 states a specific operation: retrieving details for one submitted sitemap. It enumerates concrete returned attributes (last download, last submitted, URL counts per type, pending/errored status), which clearly distinguishes it from list_sitemaps or mutation siblings.
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?
Usage is implied: use this when you need details for a single submitted sitemap. However, it does not explicitly name alternatives such as list_sitemaps for enumerating sitemaps or submit_sitemap for adding one, so the agent must infer routing from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_verification_tokenARead-onlyIdempotent
Mint the token that proves ownership of a site or domain, so a new property can be verified without opening the Search Console UI. A domain property must use DNS: publish the returned token as a TXT record on the apex. A URL-prefix property can instead use META, a tag in the homepage head, or FILE, a file served at the site root. Publish the token first, then call verify_site. Minting a token changes nothing on its own.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | INET_DOMAIN for a domain property (sc-domain:), SITE for a URL-prefix property. | |
| method | Yes | DNS_TXT is the only method a domain property accepts. A URL-prefix property can also use META or FILE. | |
| account | No | Which signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in. | |
| identifier | Yes | The site URL for SITE ("https://navid.me/"), or the bare domain for INET_DOMAIN ("navid.me"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Explicitly states a non-obvious behavior: 'Minting a token changes nothing on its own.' This is valuable beyond the readOnlyHint/idempotentHint annotations, because it clarifies that the tool is safe but also that the verification flow is incomplete until verify_site is called.
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?
Four sentences, each earning its place: first states the purpose, second and third give method-specific instructions, fourth clarifies side effects. No filler or repetition of schema details.
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 no output schema, the description covers the critical context: why to use it, how to use it with different property types, and what it does NOT do. Minor gap: it doesn't describe the token format or what the response contains, but the flow is clear enough for an agent to proceed 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?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds context about how method relates to property type, but that is also partly in the schema's enum descriptions. The description doesn't add much beyond the schema, hence baseline 3.
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?
Description states a specific verb ('Mint') and resource ('the token that proves ownership'), immediately distinguishing this from verification itself. It also pre-empts confusion with the sibling verify_site by explaining the token's role.
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?
Explicitly explains when to use this vs verify_site: 'Publish the token first, then call verify_site.' Also gives per-property-type method constraints (DNS for domain, META/FILE for URL-prefix), so an agent knows exactly when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_urlARead-onlyIdempotent
Ask Google what it actually knows about one URL: whether it is indexed, which sitemap it was found in, the canonical Google picked against the one the page declares, the last crawl, mobile usability, rich results and any AMP version. This is the tool for "why is this page not showing up". Two constraints worth knowing before a loop: the URL has to sit under the property, and the quota is roughly 2000 inspections a day and 600 a minute per property, so inspect the pages that matter rather than a whole site.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The full URL to inspect. Must be under the property. | |
| site | Yes | The Search Console property. Either a URL-prefix property ("https://navid.me/", trailing slash included) or a domain property ("sc-domain:navid.me"). A bare hostname is read as a domain property. Call list_sites for the exact strings this account owns, because the two shapes are different properties and mixing them up returns a 403. | |
| account | No | Which signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in. | |
| language_code | No | BCP-47 language for the messages Google returns, e.g. "en-US". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds non-obvious behavior: the property-bound URL requirement and specific quota limits (2000/day, 600/minute). It doesn't describe failure modes or how a non-indexed URL is returned, but given annotation coverage the added context is 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?
Two tightly written sentences: the first front-loads the core behavior and return fields, the second adds use-case and constraints. There is no repetitive or filler content; every clause earns its place.
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?
The description covers purpose, selection criteria, property constraint, and rate limits, which is nearly everything an agent needs to call correctly. Since there is no output schema, the description summarizes return fields at a semantic level but does not describe the exact response shape or error conditions, leaving a small gap.
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%, so all parameters (url, site, account, language_code) are already documented. The description only restates the 'under the property' constraint from the schema and adds no new type or format details, meeting the baseline but not exceeding it.
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?
States a specific action (ask Google about one URL) and enumerates the exact data returned: indexed status, sitemap, canonical comparison, last crawl, mobile usability, rich results, AMP. Names the target use-case ('why is this page not showing up') and, by focusing on 'one URL', distinguishes itself from the plural sibling inspect_urls.
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?
Gives a clear diagnostic use-case and a practical constraint: inspect only pages that matter because of daily/minute quotas. It says the URL must sit under the property, which tells the agent when this tool is appropriate. It doesn't explicitly name alternative tools for aggregate analysis, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_urlsARead-onlyIdempotent
Inspect several URLs on the same property in one call and get a compact table back: indexed or not, the canonical Google chose, and the last crawl. Use it to check a batch of pages after a launch or a migration. Requests run a few at a time to stay inside the per-minute quota, and one URL failing does not sink the rest. Keep batches small: the daily quota is about 2000 inspections per property.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | The Search Console property. Either a URL-prefix property ("https://navid.me/", trailing slash included) or a domain property ("sc-domain:navid.me"). A bare hostname is read as a domain property. Call list_sites for the exact strings this account owns, because the two shapes are different properties and mixing them up returns a 403. | |
| urls | Yes | Up to 50 URLs, all under the property. | |
| account | No | Which signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already declare this read-only, idempotent, and non-destructive, the description adds valuable behavioral context: throttled execution ('Requests run a few at a time'), partial-failure isolation ('one URL failing does not sink the rest'), and quota limits ('daily quota is about 2000'). This goes beyond the structured 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?
Four sentences, each earning its place: what the tool does, when to use it, how it behaves under load, and the quota constraint. The key output is front-loaded and there is no filler or repetition of schema details.
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 read-only batch inspection tool with no output schema, the description sufficiently explains the return shape ('compact table') and the key fields. The operational constraints and failure behavior are covered, and parameter nuances live in the schema. Nothing critical is missing for correct invocation.
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%, so the schema already fully documents site, urls, and account. The description adds batch-level context and quotas but doesn't need to explain individual parameters. A baseline of 3 is appropriate because the heavy lifting is done by the input schema.
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 states a specific verb and resource ā 'Inspect several URLs on the same property' ā and immediately distinguishes it from the singular sibling inspect_url by emphasizing batch inspection. The compact table with indexed/canonical/last-crawl columns precisely conveys what the tool returns.
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 gives clear context for when to use this tool ('after a launch or a migration') and practical operational guidance about batch size and quotas. It doesn't explicitly contrast with inspect_url or say when to prefer alternatives, so it stops short of a full when-not discussion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_accountsARead-onlyIdempotent
List the Google accounts this server can act as, and which one is used when a tool call does not name one. Pass an email as the account argument on any other tool to switch.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, establishing a safe read-only operation. The description adds context about the default account behavior ('which one is used when a tool call does not name one'), which is valuable beyond the annotations. However, it doesn't describe the return structure or list format, which is a minor gap.
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?
Two sentences with no redundant words. The first sentence states the primary function and a key behavioral detail, the second explains the switching mechanism. Every word earns its place, and the description is appropriately sized for the tool's simplicity.
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 parameterless, annotation-rich tool, the description fully covers what an agent needs: what the tool lists, the default account behavior, and how to change accounts. No output schema exists, but the purpose is simple enough that return format is self-evident. Nothing essential 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 tool has zero parameters, and schema description coverage is 100% (empty schema). The baseline for 0 params is 4. The description mentions the `account` argument as a cross-tool concept, which adds context even though it's not a parameter of this tool. No deduction needed.
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 uses the specific verb 'List' and clearly identifies the resource ('Google accounts this server can act as'). It also distinguishes its purpose from the sibling tools by focusing on account management rather than site operations, making the tool's role immediately clear.
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 explains when to use the tool (to discover available accounts and the default account) and provides explicit instructions for switching accounts via the `account` argument on other tools. This gives clear context for usage relative to alternatives without needing to reference sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sitemapsARead-onlyIdempotent
Every sitemap submitted for a property, with when Google last downloaded each one, how many URLs it holds per content type, and any warnings or errors. A sitemap Google has quietly stopped reading shows up here as a lastDownloaded date that stopped moving, which nothing in the UI puts in front of you.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | The Search Console property. Either a URL-prefix property ("https://navid.me/", trailing slash included) or a domain property ("sc-domain:navid.me"). A bare hostname is read as a domain property. Call list_sites for the exact strings this account owns, because the two shapes are different properties and mixing them up returns a 403. | |
| account | No | Which signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in. | |
| sitemap_index | No | Only list the children of this sitemap index URL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the call as read-only, idempotent, and non-destructive. The description adds useful behavioral context by revealing that a stop in lastDownloaded indicates Google is no longer reading the sitemap, which is not obvious from the UI or schema.
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?
Two focused sentences with no filler. The first sentence front-loads the core function and return fields, and the second adds a genuinely useful diagnostic insight 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 read-only list tool, the description tells the agent what data will be returned and even highlights a non-obvious way to interpret it. Combined with the thorough parameter schema and safety annotations, nothing essential 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?
Schema description coverage is 100%, and each parameter is already explained in detail, including site formats, the account default, and sitemap_index filtering. The description adds no parameter-level meaning, 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 names a specific verb ('list') and resource ('sitemaps submitted for a property') and spells out the returned fields: last download time, URL counts per content type, and warnings/errors. This clearly distinguishes it from siblings like get_sitemap, submit_sitemap, and 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 gives clear context for when the tool is useful, especially the diagnostic signal of a stalled lastDownloaded date. It does not explicitly name alternatives or state when not to use it, but the list-focused purpose is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sitesARead-onlyIdempotent
Every Search Console property this Google account can reach, with the permission level on each: siteOwner, siteFullUser, siteRestrictedUser or siteUnverifiedUser. Start here. The siteUrl strings it returns are the exact values every other tool wants, and copying one avoids the trailing-slash and sc-domain: mismatch that surfaces as a permissions error.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | Which signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable context about permission levels and the exactness of the returned URLs, which is not captured in annotations, enhancing transparency without contradiction.
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?
Two sentences deliver the core purpose and essential usage context. The first sentence states the resource and scope, the second emphasizes the critical dependency on returned values. No fluff or 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 the annotations and schema, the description is complete for an agent to call correctly. It clarifies the output format (siteUrl and permission) and the importance of exact values, covering all necessary aspects without needing an 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 single parameter (account) is fully described in the schema, including how to omit it and how to discover valid values via list_accounts. The description does not need to add more, as the schema provides complete semantic 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 it lists all Search Console properties accessible by the account, includes permission levels, and explicitly positions it as the starting point. It distinguishes itself from siblings like get_site and add_site by focusing on the complete enumeration and the necessity of using its returned siteUrl values.
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 'Start here' and explains that the returned siteUrl strings are required by other tools to avoid trailing-slash and sc-domain mismatches. This gives clear when-to-use guidance and highlights a critical dependency, making the usage context unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_verified_sitesARead-onlyIdempotent
Every site and domain this Google account has verified ownership of, across all Google products. This is a wider list than list_sites, because a verified domain is not automatically a Search Console property. Use it to tell "not verified yet" apart from "verified but never added", which are two different fixes.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | Which signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe, read-only operation. The description adds the behavioral nuance that verified domains are not automatically Search Console properties, which helps interpret results. However, it doesn't disclose details like data freshness or whether the list includes subdomains, but the annotations carry the main burden.
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, each earning its place: the first states scope, the second clarifies the distinction from a sibling, and the third explains the practical use case. No fluff, front-loaded with the core purpose.
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 list tool with no required parameters and no output schema, the description is sufficient. It explains why this tool exists, when to use it, and how it differs from a sibling. The only minor gap is not describing the format of the returned list, but that is not critical given the annotations and simplicity.
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 single parameter 'account' is fully documented in the schema with description and instruction to call list_accounts. The description provides no additional parameter semantics, but schema coverage is 100%, 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 states a specific verb ('list') and resource ('every site and domain this Google account has verified ownership of, across all Google products'), and explicitly differentiates from list_sites. It clearly conveys the scope and purpose, distinguishing it from the sibling tool.
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 contrasts with list_sites and explains when to use this tool: to distinguish 'not verified yet' from 'verified but never added'. It also implies when to use the alternative (list_sites for Search Console properties). This provides clear usage context and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_search_analyticsARead-onlyIdempotent
The core report: clicks, impressions, CTR and average position from Google Search, grouped by any combination of query, page, country, device, searchAppearance, date or hour. This is the full-control tool. For the questions people actually ask, top_queries, top_pages, striking_distance and compare_periods are one call instead of a hand-assembled body. Two things to know before reading a result as bad news. Data finalises on a two to three day lag, so a window ending today is short at the end. And Google withholds rare queries for privacy, which is why the query breakdown reliably sums to fewer clicks than the site total.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | The Search Console property. Either a URL-prefix property ("https://navid.me/", trailing slash included) or a domain property ("sc-domain:navid.me"). A bare hostname is read as a domain property. Call list_sites for the exact strings this account owns, because the two shapes are different properties and mixing them up returns a 403. | |
| type | No | Which surface to report on. Defaults to web. "discover" and "googleNews" carry no query or device dimension at all, so asking for one returns an error rather than empty rows. | |
| account | No | Which signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in. | |
| filters | No | Combined with AND. | |
| end_date | Yes | YYYY-MM-DD, in PST. | |
| row_limit | No | Default 1000, max 25000. | |
| start_row | No | Zero-based offset, for paging past row_limit. | |
| data_state | No | "all" includes the most recent partial days, which is the only way to see the last two or three at all. Defaults to final. | |
| dimensions | No | Group-by columns, e.g. ["query"] or ["page","device"]. Omit for site totals. | |
| start_date | Yes | YYYY-MM-DD, in PST. About 16 months of history is available. | |
| aggregation_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds substantial behavioral context: a two-to-three-day data finalization lag that explains short-looking recent windows, and Google's privacy withholding of rare queries causing query-level clicks to sum to less than site totals. These are non-obvious data behaviors that directly affect interpretation of results, going beyond annotation defaults.
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 yet information-dense: a one-sentence definition, a one-sentence routing to alternatives, and a marker introducing two critical caveats. Every sentence earns its place, and the most important identifier (what the tool is) is front-loaded. No fluff or repetition of schema content.
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 complexity (eleven parameters, many dimensions) and lack of an output schema, the description provides key interpretive context (data lag, privacy aggregation) that an agent must know to correctly evaluate results. It does not explicitly describe the return structure, but that is largely standard. The missing piece is a brief note on pagination or default row behavior, though schema already covers row_limit and start_row. Overall it is nearly 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 description coverage is 91%, so the input schema already documents parameters thoroughly, including site format, enum meanings, date formats, and default values. The description does not add per-parameter semantics but rather focuses on overall tool behavior. Per the baseline rule for high schema coverage, a score of 3 is appropriate; it adds marginal value by mentioning dimension combinability but not new parameter detail.
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 the specific verb 'report' and enumerates the exact metrics (clicks, impressions, CTR, average position) and the resource (Google Search), with a clear grouping capability. It explicitly contrasts itself with sibling tools like top_queries and top_pages, distinguishing 'full-control' from convenient one-call alternatives. This leaves no ambiguity about what the tool does.
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 states a clear use case: the core report for custom dimension combinations, and explicitly advises that for common user questions, top_queries, top_pages, striking_distance, and compare_periods are one-call alternatives instead of assembling a body manually. This gives agents a routing rule. However, it does not explicitly say 'when not to use' beyond that implied contrast, so a small gap remains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
striking_distanceBRead-onlyIdempotent
Queries a property already ranks for on the edge of page one, between positions 5 and 20 by default, ordered by the impressions being left on the table. These are the pages where a title rewrite or a section of added depth moves traffic, because the ranking work is already done. The single most useful report in Search Console and the UI makes you build it by hand every time.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | The Search Console property. Either a URL-prefix property ("https://navid.me/", trailing slash included) or a domain property ("sc-domain:navid.me"). A bare hostname is read as a domain property. Call list_sites for the exact strings this account owns, because the two shapes are different properties and mixing them up returns a 403. | |
| limit | No | ||
| account | No | Which signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in. | |
| max_position | No | ||
| min_position | No | ||
| min_impressions | No | Ignore queries too rare to be worth acting on. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is read-only, idempotent, and non-destructive. The description adds useful behavioral detail beyond the annotations: the default position window of 5-20, the ordering by 'impressions being left on the table,' and the type of page returned. It could disclose the response format, but the safety profile is already covered by 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 first two sentences are reasonably efficient and front-load the key behavior and use case. The third sentence ('The single most useful report...') is subjective marketing and does not help an agent select or invoke the tool. The first sentence also has a grammatical stumble that slightly reduces clarity.
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?
The tool has seven parameters and no output schema, yet the description explains neither the return shape nor the effect of days, limit, and account. An agent could make a default call with only site, but would lack crucial context about pagination, result contents, and how the ordering is computed. This is incomplete 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 low (~43%), with only site and min_impressions explained in the schema. The description contributes only the default position range and ordering concept; it does not clarify days, limit, account, min_position, or max_position semantics beyond what the schema already implies. Since the schema cannot carry the burden and the description does not compensate, this is a clear gap.
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 identifies a specific report: pages/queries of a Search Console property already ranking between positions 5 and 20, ordered by impression opportunity. This is enough to distinguish it from generic siblings like top_queries or query_search_analytics. The first sentence is slightly awkward ('a property already ranks for'), but the resource and purpose are identifiable.
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 clear context for when the tool is valuable: when a page already ranks near page one and a title rewrite or added content depth can capture more traffic. It explains why these opportunities are actionable because the ranking work is already done. It does not explicitly name alternatives or exclusion conditions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_sitemapAIdempotent
Submit or resubmit a sitemap. This is the only way the API can ask Google to recrawl anything: there is no endpoint behind the "Request indexing" button, so resubmitting after publishing is the programmatic equivalent. Returns immediately. Google fetches the file on its own schedule, so read the result back with get_sitemap rather than expecting counts here.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | The Search Console property. Either a URL-prefix property ("https://navid.me/", trailing slash included) or a domain property ("sc-domain:navid.me"). A bare hostname is read as a domain property. Call list_sites for the exact strings this account owns, because the two shapes are different properties and mixing them up returns a 403. | |
| account | No | Which signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in. | |
| sitemap_url | Yes | Full URL of the sitemap. Must be on the property it is submitted to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include idempotentHint=true, openWorldHint=true, and destructiveHint=false. The description adds valuable behavior beyond those: the call returns immediately, Google fetches the sitemap on its own schedule, and no counts are returned. This async caveat is exactly the kind of context agents need.
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 with no filler. The core action is front-loaded, followed by the most decision-relevant caveats: uniqueness, async behavior, and the correct follow-up tool. Every sentence earns its place.
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 having no output schema, the description explains what the response will not contain and what will happen afterward, which is the most likely source of confusion. It also names get_sitemap as the verification path. This is complete enough for an agent to invoke 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?
Schema description coverage is 100%, so the baseline is 3. The tool's description text does not add parameter-specific meaning, but the schema already thoroughly documents site property shapes, account selection, and sitemap_url constraints. No deduction is warranted, and there is no extra value to credit.
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 a specific verb and resource: 'Submit or resubmit a sitemap.' It immediately distinguishes the tool by stating it is 'the only way the API can ask Google to recrawl anything' and contrasts it with get_sitemap, making its unique role unmistakable.
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 explicit usage context: resubmit after publishing when recrawling is needed. It also tells the agent what not to expect and which alternative to use for verification: 'read the result back with get_sitemap rather than expecting counts here.' This is strong when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
top_pagesBRead-onlyIdempotent
The pages on a property earning the most clicks from Google Search, with impressions, CTR and average position. Defaults to the last 28 days ending three days ago.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | The Search Console property. Either a URL-prefix property ("https://navid.me/", trailing slash included) or a domain property ("sc-domain:navid.me"). A bare hostname is read as a domain property. Call list_sites for the exact strings this account owns, because the two shapes are different properties and mixing them up returns a 403. | |
| type | No | Which surface to report on. Defaults to web. "discover" and "googleNews" carry no query or device dimension at all, so asking for one returns an error rather than empty rows. | |
| limit | No | ||
| account | No | Which signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in. | |
| country | No | Three-letter country code, e.g. "usa". | |
| query_filter | No | Only clicks that came from queries containing this. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the default date-range behavior and the three-day trailing lag, which is useful context, but it does not describe pagination, result grouping, or other runtime behavior beyond the defaults.
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?
Two short sentences with no filler: the first states the tool's purpose and output, the second gives the default time window. Both sentences earn their place, and the most important information is front-loaded.
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 read-only report with seven parameters covered mostly by schema descriptions, the description conveys the core output fields and default date range. Since there is no output schema, the explicit mention of impressions, CTR, and average position helps. It does not describe row limits or grouping, but that is not critical for this tool's core usage.
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 71%, so the schema already documents most parameters. The description adds no meaning beyond the schema's property descriptionsāit does mention output metrics (impressions, CTR, position), but not parameter semantics. With high schema coverage, 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 clearly identifies the resource (pages) and the selection criterion (earning the most clicks from Google Search), and it names the included metrics (impressions, CTR, average position). It does not use an explicit verb like 'returns' or 'lists', and it does not explicitly differentiate itself from sibling tools such as top_queries, but the meaning is still unmistakable.
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 only usage guidance is the default time window ('last 28 days ending three days ago'). There is no instruction on when to choose top_pages over query_search_analytics, top_queries, or other alternatives, and no exclusions or explicit-use conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
top_queriesARead-onlyIdempotent
The search queries bringing the most clicks to a property, with impressions, CTR and average position. Defaults to the last 28 days ending three days ago, because Search Console lags and a window ending today reads as empty.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Window length. | |
| site | Yes | The Search Console property. Either a URL-prefix property ("https://navid.me/", trailing slash included) or a domain property ("sc-domain:navid.me"). A bare hostname is read as a domain property. Call list_sites for the exact strings this account owns, because the two shapes are different properties and mixing them up returns a 403. | |
| type | No | Which surface to report on. Defaults to web. "discover" and "googleNews" carry no query or device dimension at all, so asking for one returns an error rather than empty rows. | |
| limit | No | ||
| account | No | Which signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in. | |
| country | No | Three-letter country code, e.g. "usa", "gbr", "swe". | |
| page_filter | No | Only queries that landed on pages whose URL contains this, e.g. "/blog/". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a meaningful behavioral quirk beyond the readOnly/openWorld/idempotent annotations: the default window ends three days ago because an ending-today window reads as empty due to Search Console lag. This is useful operational context that is not available in the annotations or schema.
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?
Two sentences with no filler. The first states the core function and metrics, and the second justifies the default date window with a concrete reason. Every clause earns its place.
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?
The description names the returned metrics and explains the freshness default, which is important because there is no output schema. Combined with the very detailed parameter schema, an agent can call this correctly, though it does not fully discuss result ordering, pagination, or how it differs from related report tools.
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 high (86%), and the schema already explains site, type, account, country, and page_filter with useful detail. The main description does not explain any parameters itself, which is acceptable here because the schema carries the semantic burden.
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 identifies the resource: search queries ranked by clicks to a property, with a specific set of metrics (impressions, CTR, average position). It is clear enough to be distinguished from pages-focused siblings, though it does not explicitly name or contrast itself with top_pages or query_search_analytics.
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 explains default behavior and a data-lag reason, but provides no guidance about when to choose this tool over query_search_analytics, top_pages, or compare_periods. There are no exclusions or alternative routing cues, leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_siteAIdempotent
Claim ownership once the token from get_verification_token is live. Google fetches the DNS record, meta tag or file and, if it matches, marks this Google account an owner of the site. It fails until the token is actually reachable, which with DNS means waiting for propagation, sometimes several minutes. Retrying is safe.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | INET_DOMAIN for a domain property (sc-domain:), SITE for a URL-prefix property. | |
| method | Yes | The same method the token was minted for. | |
| account | No | Which signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in. | |
| identifier | Yes | The same identifier passed to get_verification_token. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description richly discloses behavioral traits beyond annotations. It explains the asynchronous nature of DNS propagation ('sometimes several minutes'), the failure condition ('fails until the token is actually reachable'), and explicitly states idempotency ('Retrying is safe'). This complements the idempotentHint=true annotation by explaining why retrying is safe. It also implies verification is a non-reversible ownership claim but 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 three sentences, each earning its place: the first states the action and requirement, the second explains the failure condition and propagation delay, and the third reassures about retry safety. It is front-loaded with the primary purpose, and no redundant phrases exist.
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?
The description is complete for a tool with a full input schema and rich annotations. It covers the prerequisite step, the operational behavior, and error recovery. There is no output schema, but the description doesn't need to explain return values because the tool's outcome (ownership claim) is implicit and its behavior is fully disclosed. No critical missing context for an agent to invoke 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 input schema covers 100% of parameters with descriptions, including enum explanations and references to get_verification_token for 'identifier' and 'method'. The description adds context about the token being live and reachable but doesn't add parameter-specific meaning beyond the schema. Since schema coverage is complete, 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 clearly states the tool's purpose: 'Claim ownership once the token from get_verification_token is live.' It uses the specific verb 'claim' with the resource 'ownership' and references a prerequisite tool. While it doesn't explicitly differentiate itself from sibling tools beyond mentioning get_verification_token, its unique role in the verification workflow is evident from the description and schema.
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 clear usage context: it must be used after obtaining a token from get_verification_token, and it mentions that the token must be 'actually reachable' before verification succeeds. It doesn't explicitly state when not to use it or name alternatives, but the workflow dependency is clear. The mention that 'Retrying is safe' provides practical usage guidance for handling failures.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes: accounts, sites, analytics, sitemaps, inspection, verification. Minor overlap exists between list_sites and list_verified_sites, and between inspect_url and inspect_urls, but descriptions clarify the differences. top_queries/top_pages/compare_periods/striking_distance are specialized analytics but clearly differentiated by descriptions.
Uses a consistent verb_noun pattern: list_accounts, list_sites, get_site, add_site, delete_site, query_search_analytics, submit_sitemap, inspect_url, verify_site. Minor deviations like 'striking_distance' and 'compare_periods' are noun-phrases rather than verbs, but overall the pattern is readable and predictable.
19 tools is slightly above the typical well-scoped range but appropriate for Search Console's breadth: account management, site management, analytics, sitemaps, inspection, and verification. Each tool serves a distinct need and none feel redundant, though the count is on the higher side.
The surface covers the full lifecycle of site verification, property management, sitemap submission, analytics queries, URL inspection, and batch inspection. Missing operations like updating a sitemap are not really applicable, and the tools address practical dead ends (verification steps, resubmission, quota awareness). It feels complete for the domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
SEO & marketing toolkit for AI agents: GA4, Search Console, AdSense, GTM, PageSpeed, Trends.
SEO research, audits, backlinks, GSC, and content workflow tools for AI agents.
Turn Search Console data into SEO actions, content, publishing, indexing, and AI insights.
SEO answers for AI agents: Search Console reads free, plus competitor, keyword, backlink, SERP data.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceProvides AI agents with read-only access to Google Search Console data, including search analytics, index coverage, and sitemap status. It enables users to query clicks, impressions, and ranking performance or check URL indexing status through natural language.785MIT
- FlicenseNot gradedqualityFmaintenanceEnables interacting with Google Search Console via natural language, supporting search analytics, URL inspection, sitemap management, and site listing.24
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to query Google Search Console data including search analytics, URL inspection, sitemap management, and site performance monitoring, with per-user OAuth authentication.
- AlicenseAqualityCmaintenanceEnables AI assistants to query and manage Google Search Console data, including search analytics, URL indexing status, and sitemap management, for SEO and LLMO analysis directly from a conversation.154,053MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/navidmoazzez/google-search-console-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server