Skip to main content
Glama
navidmoazzez

Google Search Console MCP

by navidmoazzez

Google Search Console MCP

Stars License YouTube X

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

What you can ask it

Real prompts, not features

2

Quick install

Node, one command

3

Setup

Getting a Google credential

4

Connect your client

Every client, copy and paste

5

Check it worked

doctor

6

Tools

All 19

7

Working safely

What is guarded, what is not

8

What Search Console actually does

The things that surprise people

9

Your data

What is stored, and where

10

Running it on a server

For claude.ai

11

Troubleshooting

When something breaks

12

FAQ

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 --version

That 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 login

A 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@latest

Add --scope user to make it available in every project rather than just this one.

Claude Desktop

Platform

Config file

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

{
  "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 from which 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 doctor

It 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.com

Two 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

top_queries

The queries bringing the most clicks, with CTR and average position

top_pages

The pages earning the most clicks

compare_periods

Two equal windows side by side, deltas already computed

striking_distance

Queries ranking 5 to 20, sorted by impressions left on the table

query_search_analytics

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

inspect_url

What Google knows about one URL: indexed, canonical, last crawl, rich results

inspect_urls

The same for a batch, as a compact table

Sitemaps

Tool

What it does

list_sitemaps

Every submitted sitemap, when Google last read it, URL counts, errors

get_sitemap

Details for one

ā— submit_sitemap

Submit or resubmit. The only recrawl signal the API can send

ā— delete_sitemap

Stop tracking one. Needs confirm: true

Properties

Tool

What it does

list_sites

Every property this account reaches, with permission level. Start here

get_site

One property and the permission held on it

ā— add_site

Register a new property, unverified

ā— delete_site

Remove a property. Needs confirm: true

list_accounts

Which Google accounts are signed in, and which is the default

Verification

Tool

What it does

get_verification_token

Mint the DNS, meta or file token that proves ownership

ā— verify_site

Claim ownership once the token is live

list_verified_sites

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:

readOnlyHint

destructiveHint

Reads

true

false

submit_sitemap, add_site, verify_site

false

false

delete_site, delete_sitemap

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

~/.google-search-console-mcp/tokens.json, mode 600

Audit log, only if you set GSC_AUDIT_LOG

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 8000

That 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 8000

The 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 login again.

User does not have sufficient permission

Wrong property string. https://example.com/ and sc-domain:example.com are different properties. Run list_sites and copy one.

doctor says 0 properties

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.

Search Console API has not been used in project

The API is switched off in your Google Cloud project. Enable it.

unauthorized_client

GSC_CLIENT_ID points at a different OAuth client than the one you signed in with. A refresh token only works with the client that minted it.

Empty results for the last few days

The two to three day data lag. Use data_state: "all" for partial days.

Fewer clicks per query than the site total

Expected. Google withholds rare queries.

Claude Desktop cannot find npx

It does not inherit your shell PATH. Use the absolute path from which npx.

Write tools missing from the tool list

GSC_READ_ONLY=1 is set, which unregisters them.

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

Dependencies

Package

License

Why

@modelcontextprotocol/sdk

MIT

The MCP protocol implementation

zod

MIT

Tool input schemas

express

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 tools
add_siteA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesThe 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.
accountNoWhich signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_periodsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLength of each window.
siteYesThe 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.
typeNoWhich 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.
limitNoRows pulled per window before joining.
accountNoWhich signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in.
dimensionNoquery

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_siteA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesThe 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.
accountNoWhich signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in.
confirmNoRemoving a property cuts this account off from its search history until it is re-added and re-verified. Set true to proceed.

TDQS

A4.2/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_sitemapA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesThe 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.
accountNoWhich signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in.
confirmNoSet true to proceed. The submission history for this sitemap is not recoverable.
sitemap_urlYesFull URL of the sitemap to stop tracking.

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_siteC
Read-onlyIdempotent

One property and the permission level this account holds on it.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesThe 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.
accountNoWhich signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in.

TDQS

C2.4/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose2/5

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.

Usage Guidelines2/5

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_sitemapA
Read-onlyIdempotent

Details for one submitted sitemap: last download, last submitted, URL counts per type, and whether it is pending or errored.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesThe 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.
accountNoWhich signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in.
sitemap_urlYesFull URL of the sitemap, e.g. https://navid.me/sitemap.xml

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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_tokenA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesINET_DOMAIN for a domain property (sc-domain:), SITE for a URL-prefix property.
methodYesDNS_TXT is the only method a domain property accepts. A URL-prefix property can also use META or FILE.
accountNoWhich signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in.
identifierYesThe site URL for SITE ("https://navid.me/"), or the bare domain for INET_DOMAIN ("navid.me").

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_urlA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe full URL to inspect. Must be under the property.
siteYesThe 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.
accountNoWhich signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in.
language_codeNoBCP-47 language for the messages Google returns, e.g. "en-US".

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_urlsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesThe 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.
urlsYesUp to 50 URLs, all under the property.
accountNoWhich signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_accountsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_sitemapsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesThe 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.
accountNoWhich signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in.
sitemap_indexNoOnly list the children of this sitemap index URL.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_sitesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNoWhich signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in.

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_sitesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNoWhich signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in.

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_analyticsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesThe 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.
typeNoWhich 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.
accountNoWhich signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in.
filtersNoCombined with AND.
end_dateYesYYYY-MM-DD, in PST.
row_limitNoDefault 1000, max 25000.
start_rowNoZero-based offset, for paging past row_limit.
data_stateNo"all" includes the most recent partial days, which is the only way to see the last two or three at all. Defaults to final.
dimensionsNoGroup-by columns, e.g. ["query"] or ["page","device"]. Omit for site totals.
start_dateYesYYYY-MM-DD, in PST. About 16 months of history is available.
aggregation_typeNo

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_distanceB
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYesThe 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.
limitNo
accountNoWhich signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in.
max_positionNo
min_positionNo
min_impressionsNoIgnore queries too rare to be worth acting on.

TDQS

B3.4/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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_sitemapA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesThe 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.
accountNoWhich signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in.
sitemap_urlYesFull URL of the sitemap. Must be on the property it is submitted to.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_pagesB
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYesThe 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.
typeNoWhich 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.
limitNo
accountNoWhich signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in.
countryNoThree-letter country code, e.g. "usa".
query_filterNoOnly clicks that came from queries containing this.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_queriesA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoWindow length.
siteYesThe 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.
typeNoWhich 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.
limitNo
accountNoWhich signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in.
countryNoThree-letter country code, e.g. "usa", "gbr", "swe".
page_filterNoOnly queries that landed on pages whose URL contains this, e.g. "/blog/".

TDQS

A3.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_siteA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesINET_DOMAIN for a domain property (sc-domain:), SITE for a URL-prefix property.
methodYesThe same method the token was minted for.
accountNoWhich signed-in Google account to act as, by email. Omit to use the default. Call list_accounts to see what is signed in.
identifierYesThe same identifier passed to get_verification_token.

TDQS

A4.3/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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

A3.7/5.0
Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness5/5

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

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides 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.
    78
    5
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to query Google Search Console data including search analytics, URL inspection, sitemap management, and site performance monitoring, with per-user OAuth authentication.
  • A
    license
    A
    quality
    C
    maintenance
    Enables 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.
    15
    4,053
    MIT

Latest Blog Posts

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