Skip to main content
Glama
mamrrez

Google Search Console MCP Server

Google Search Console MCP Server — gsc-mcp-full

The complete MCP server for Google Search Console. Ask Claude, Cursor, Windsurf, VS Code, Codex or any other MCP client about your search performance, indexing and sitemaps in plain language — and get analysis back, not a spreadsheet.

37 tools · every Search Console API endpoint · the 24-hour view and hourly data · history beyond 16 months · correct numbers in every language.

PyPI CI Python 3.10+ MCP SDK 2.x License: MIT

Quick start · Tools · Languages · FAQ · Full docs


What you get

✅ Complete

All 10 live methods of the Search Console API, all 6 search types (web, image, video, news, Discover, Google News), all 7 dimensions including hourly, with contains, exact, exclude and regex filters. Nothing in the API is left out.

⚡ Fast

Starts in under a second. Inspects up to 10 URLs in parallel, 50 per request, inside a time budget so a big batch never times out your client. Retries rate limits and server errors on its own. Groups 25,000 queries in about half a second. Questions about synced history never touch the network.

🔄 Current

Built on MCP SDK 2.x. API coverage checked against Google's own API definition (October 2026). Mirrors the Performance report's newest options: the 24-hour view with preliminary data, and hourly, daily, weekly or monthly granularity. Tested on Linux, macOS and Windows with Python 3.10–3.13 on every change.

🧠 Answers, not exports

Cannibalization, striking-distance keywords, under-performing titles, decaying pages, brand vs non-brand — worked out for you and returned as short tables your AI can reason about.

🌍 Right in every language

Search Console splits one keyword into several rows when it is typed several ways. This server merges them — Persian, Arabic, Chinese, Japanese, Korean, Turkish, Vietnamese, Russian and more — so the totals are the real ones.

🗄️ No 16-month limit

Sync your data into a local file once; compare this quarter with the same quarter two years ago, long after Google has deleted it.

🕒 Your timezone

Search Console days are Pacific-Time days. Hourly data is re-cut into your local days.

🎯 Numbers you can trust

Header totals are the real period totals, not a sum of the rows shown. Page URLs are never shortened, so they can be passed straight to the next tool. A failure is reported as an error with its reason, never as an empty result. Covered by 111 automated tests on Linux, macOS and Windows.

🔒 Safe by default

Read-only access unless you opt in. Runs on your machine; your sign-in never leaves it. No hosted service, no account, no telemetry.

💸 Free and light

MIT licensed. Four dependencies. One command to run.

Works with: Claude Desktop · Claude Code · Cursor · Windsurf · VS Code (Copilot agent mode) · OpenAI Codex CLI · any MCP client over stdio or HTTP.

Related MCP server: Wingate SEO MCP

Tools

37 tools in 8 groups. You don't call them yourself — ask in plain language and your AI picks the right one.

🌍 merges spelling variants · 🗄️ can run on local history (any date range) · ✍️ needs write access (GSC_ALLOW_WRITE=1)

📊 Search performance

Tool

What it gives you

Ask it like this

performance_overview

One-screen summary: totals, a daily, weekly or monthly trend, top queries and pages, devices, countries, data freshness

"How did example.com do in the last 6 months, month by month?"

query_search_analytics 🌍

Any report you can build in Search Console: every dimension, search type and filter, with a query filter that also matches a term's other spellings

"Top mobile queries from Germany containing 'klima' last month"

compare_periods 🌍

Two periods side by side with the biggest movers first — previous period, same dates last year, 52 weeks ago, or custom dates

"Compare this month with the same month last year"

queries_for_page 🌍

Every query that brings traffic to one page

"What do people search to land on /pricing/?"

pages_for_query 🌍

Which pages rank for one keyword and how impressions split between them

"Which of my pages rank for 'air conditioner installation'?"

hourly_performance

Search Console's 24-hour view, and hour-by-hour data for the last 10 days in your own timezone

"Show the last 24 hours" · "Show last week as Tehran days"

data_freshness

Which recent days and hours are final and which are still preliminary

"Is yesterday's data complete yet?"

🎯 SEO opportunities

Tool

What it gives you

Ask it like this

striking_distance 🌍🗄️

Keywords ranking 8–20 with real demand, and the clicks you'd gain on page one

"What are my quickest ranking wins?"

find_cannibalization 🌍🗄️

Keywords where two or more of your pages compete, ranked by wasted impressions

"Where are my pages competing with each other?"

low_ctr_opportunities 🌍🗄️

Page-one results whose click-through rate is far below what their position should earn

"Which titles should I rewrite first?"

content_movers 🌍🗄️

Pages or queries that decayed, rose, disappeared or appeared since the last period

"Which pages lost traffic this month?"

brand_split 🌍🗄️

Brand vs non-brand traffic, with your brand matched in every script it's written in

"How much of my traffic is non-brand?"

🌍 Multilingual intelligence

Tool

What it gives you

Ask it like this

query_variants 🗄️

Keywords that Search Console splits across spellings, with their real combined totals

"Which keywords are split across spellings?"

language_breakdown 🗄️

Share of clicks and impressions by the language and script of the query

"How much of my traffic is Arabic vs English?"

keyboard_mistypes 🗄️

Queries typed with the keyboard on the wrong layout (ovdn lhadk = «خرید ماشین»)

"Find searches typed on the wrong keyboard"

top_terms 🗄️

Most demanded words across all queries — including Chinese, Japanese and Thai, which have no spaces

"What words appear most in my Japanese queries?"

build_query_regex

A regex filter that works for non-English text, for the API or the Search Console UI

"Give me a regex for خرید خودرو that matches every spelling"

🗄️ Unlimited history

Tool

What it gives you

Ask it like this

sync_history

Copies your data into a local database, day by day, past Google's 16 months and row caps

"Sync the last 16 months of example.com"

history_status

What's stored: date range, days and rows per property

"What history do I have saved?"

history_query 🌍

Any report over any stored date range

"Top queries for all of 2025"

history_trend 🌍

Clicks, impressions, CTR and position per day, week or month

"Monthly clicks for 'heat pump' over two years"

history_compare 🌍

Two stored periods against each other, however far apart

"Q3 this year vs Q3 two years ago"

history_sql

Your own read-only SQL against the stored data

"Run this SQL on my history: …"

🔍 Indexing and URL inspection

Tool

What it gives you

Ask it like this

inspect_url

Full inspection of one page: index status, last crawl, canonical, robots, sitemaps, rich results

"Is /new-article/ indexed? What canonical did Google pick?"

inspect_urls

Up to 50 pages inspected in parallel, as one table with separate index and rich-result verdicts

"Inspect these 30 URLs"

indexing_summary

Problems only: which pages are not indexed or fail structured data, and why

"Which of these pages have indexing issues?"

inspection_quota

How much of Google's daily inspection allowance is used

"How many inspections do I have left today?"

🗺️ Sitemaps

Tool

What it gives you

Ask it like this

list_sitemaps

Every submitted sitemap with URL counts, errors and warnings

"List my sitemaps and their errors"

get_sitemap

Details of one sitemap

"When did Google last read sitemap.xml?"

submit_sitemap ✍️

Submit or resubmit a sitemap

"Submit example.com/sitemap.xml"

delete_sitemap ✍️

Remove a sitemap from Search Console

"Remove the old sitemap"

🏠 Properties

Tool

What it gives you

Ask it like this

list_properties

Every property your account can see, with your permission level

"List my Search Console properties"

get_property

Details of one property — accepts example.com as well as the exact property URL

"Do I own example.com in Search Console?"

add_property ✍️

Add a site to your account

"Add newsite.com to Search Console"

remove_property ✍️

Remove a site from your account

"Remove the old staging property"

🛠️ Utilities

Tool

What it gives you

Ask it like this

get_capabilities

Sign-in status, access level, stored history and the tool list

"Is Search Console connected?"

reauthenticate

Sign in again to switch Google accounts

"Switch to my other Google account"

Every parameter of every tool: Tool reference.

Quick start

Three steps, about ten minutes, no cost. You need a Google account with access to Search Console.

1. Create your Google credentials

Google requires every app that reads Search Console to identify itself, so you create a free "OAuth client" once.

  1. Open Google Cloud Console and create a project (any name).

  2. Enable the Google Search Console API for it.

  3. Open Credentials → Create credentials → OAuth client ID. If asked, fill in the consent screen first: type External, any app name, your own email.

  4. Choose Desktop app, create it, and Download JSON. Keep the file somewhere permanent, for example ~/gsc/client_secret.json.

  5. On the consent screen page, click Publish app. Without this, Google signs you out every 7 days. No review is needed for personal use.

  1. In the same project: IAM & Admin → Service accounts → Create service account.

  2. Open it → Keys → Add key → Create new key → JSON. Use this file instead of the OAuth one.

  3. In Search Console → Settings → Users and permissions → Add user, add the service account's email address to each property.

No browser sign-in is needed with a service account; skip the auth command in step 3.

2. Connect your AI client

Install uv if you don't have it (one command, shown on that page). It downloads and runs the server for you — there is nothing else to install.

Then add this to your client's MCP configuration, with the path to your own file:

{
  "mcpServers": {
    "search-console": {
      "command": "uvx",
      "args": ["gsc-mcp-full"],
      "env": {
        "GSC_CREDENTIALS_PATH": "/Users/you/gsc/client_secret.json"
      }
    }
  }
}

Client

Where

Claude Desktop

Settings → Developer → Edit Config (claude_desktop_config.json)

Cursor

~/.cursor/mcp.json, or .cursor/mcp.json in a project

Windsurf

~/.codeium/windsurf/mcp_config.json

VS Code

.vscode/mcp.json — same content, but the top-level key is "servers" and each server needs "type": "stdio"

Claude Code — one command instead of a file:

claude mcp add search-console -e GSC_CREDENTIALS_PATH=/Users/you/gsc/client_secret.json -- uvx gsc-mcp-full

OpenAI Codex CLI — in ~/.codex/config.toml:

[mcp_servers.search-console]
command = "uvx"
args = ["gsc-mcp-full"]

[mcp_servers.search-console.env]
GSC_CREDENTIALS_PATH = "/Users/you/gsc/client_secret.json"

If a desktop app reports that it can't find uvx, use its full path as the command (which uvx on macOS/Linux, where uvx on Windows).

3. Sign in and ask

Sign in once from a terminal. Your browser opens; pick the Google account that has your Search Console properties.

export GSC_CREDENTIALS_PATH=~/gsc/client_secret.json
uvx gsc-mcp-full auth      # sign in (if Google warns the app is unverified: Advanced → Continue — it's your own app)
uvx gsc-mcp-full doctor    # should list your properties

Restart your AI client and ask:

List my Search Console properties, then give me a performance overview of example.com.

Stuck? See Troubleshooting.

Optional settings worth adding to the env block: "GSC_TIMEZONE": "Europe/Berlin" for local-day reports and "GSC_LANG": "fa" (or ar, tr, ja…) if most of your queries are in one language. Prefer pip? pip install gsc-mcp-full gives you the same gsc-mcp-full command.

Things to ask

  • "Run a weekly SEO report for example.com: overview, what moved, and my three best opportunities."

  • "Which pages lost more than 30% of their clicks since last month, and which queries did they lose?"

  • "Find keyword cannibalization and tell me which page should win each one."

  • "Which page-one results have a weak click-through rate? Suggest better titles."

  • "Check these 20 URLs for indexing problems."

  • "Split my traffic into brand and non-brand. Brand terms: toyota, تویوتا."

  • "Sync 16 months of history, then show monthly clicks for queries containing 'boiler'."

More prompts and ready-made workflows: Usage guide.

Languages

Search Console counts every distinct string as its own query. When the same search can be typed several ways, one keyword becomes several small rows:

What people type

Rows in Search Console

What it really is

خرید ماشین کارکرده · خريد ماشين كاركرده · خرید ماشین كاركرده

3

one keyword

قیمت پژو ۲۰۶ · قیمت پژو 206 · قيمت پژو ٢٠٦

3

one keyword

خرید bmw x5 · خريد BMW X5

2

one keyword (mixed scripts are folded too)

ماشین دست‌دوم · ماشین دست دوم · ماشین دستدوم

3

one keyword (at the loose level)

エアコン · えあこん · エアコン

3

one keyword

에어컨 설치 · 에어컨설치

2

one keyword

İstanbul klima · istanbul klima

2

one keyword

ovdn lhadk

1 meaningless query

«خرید ماشین» typed with the keyboard still set to English

Tools marked 🌍 merge these before analysing, with rules written for each script. The text you see is never altered; only the grouping changes. Two levels: standard merges the same word typed differently, loose also merges near-spellings.

Language / script

standard

loose adds

Persian, Arabic, Urdu, Pashto

ی/ي/ى, ک/ك, ه/ة/ۀ, ا/أ/إ/آ; vowel marks; tatweel; half-space; Persian and Arabic-Indic digits

ؤ→و, ئ→ی, ء dropped, Urdu ے/ھ/ہ; spacing

Chinese

full-width forms, punctuation

Traditional→Simplified (with the zh extra)

Japanese

half-width katakana, dash typed for ー

hiragana↔katakana, middle dot

Korean

composed forms

spacing differences

Hindi and other Indic scripts

joiners are kept on purpose (there they change spelling)

—

Hebrew

vowel points

—

Turkish

dotted and dotless i handled correctly (İ→i, I→ı)

accents

Vietnamese, French, German, Spanish…

case, punctuation

diacritics (điều hòa = dieu hoa, straße = strasse)

Russian, Ukrainian

ё→е

—

Greek

case

accents, final sigma

26 writing systems are recognised. English-only sites lose nothing: case, separators and spacing variants are merged for them too — while c++, c# and .net stay distinct, and 3.5 is never 35.

For Chinese, Japanese and Thai, top_terms uses a real word segmenter when you install the extra — uvx --from "gsc-mcp-full[zh]" gsc-mcp-full (or [ja], [th], [all]). The reasoning behind every rule: Languages guide.

History beyond 16 months

Google deletes Search Console data after 16 months and limits how many rows one request returns. sync_history stores each day in a local SQLite file, so both limits stop applying from the day you start.

uvx gsc-mcp-full sync example.com --days 480     # first run: everything Google still has
uvx gsc-mcp-full sync example.com --days 7       # daily, from cron: only new days are fetched

Every tool marked 🗄️ accepts source="history". Details and a cron example: History guide.

Configuration

Settings are environment variables in your client's env block. Only the first is required.

Variable

Default

Meaning

GSC_CREDENTIALS_PATH

—

Your OAuth client JSON or service-account key (detected automatically)

GSC_TIMEZONE

—

Your timezone for local-day reports, e.g. Asia/Tehran, Europe/Berlin

GSC_LANG

auto

Language hint when a query's script is ambiguous (fa, ar, tr…)

GSC_ALLOW_WRITE

off

1 enables the ✍️ tools (then run gsc-mcp-full auth --force once)

GSC_DATA_STATE

all

all matches the Search Console UI; final returns only settled days

GSC_CONFIG_DIR

~/.config/gsc-mcp-full

Where your sign-in and history are kept

GSC_TOKEN_PATH, GSC_DB_PATH

inside config dir

Override individual file locations

GSC_ROW_CAP

100000

Most rows one tool call may fetch

GSC_ALLOWED_HOSTS

—

HTTP mode only: public host names allowed to reach the server through a proxy, comma-separated

GSC_USE_ADC

off

1 to use Google Application Default Credentials on a cloud VM when no credentials file is set

GSC_BIDI_ISOLATE

off

1 if right-to-left text renders scrambled in tables

Command line

gsc-mcp-full                    # run the server — what your AI client starts
gsc-mcp-full auth [--force]     # sign in with Google
gsc-mcp-full doctor             # check setup and list properties
gsc-mcp-full sync SITE --days N # store history locally
gsc-mcp-full serve --transport streamable-http --port 8000   # serve over HTTP instead of stdio
gsc-mcp-full tools              # print the tool reference

Security

  • Read-only unless you say otherwise. The default sign-in cannot change anything in Search Console.

  • Everything stays on your machine. The server runs locally and talks only to Google. Your sign-in is stored in a file only you can read, and is never logged.

  • Write tools are locked behind GSC_ALLOW_WRITE=1 and checked on every call.

  • Search queries are treated as data. Anyone can type anything into Google; nothing in your data can trigger an action.

More in the Security guide. To report a vulnerability privately, see SECURITY.md.

FAQ

Is there an official Google Search Console MCP server? Not at the time of writing (October 2026). Google publishes an MCP server for Google Analytics but not for Search Console, so community servers like this one use Google's public Search Console API.

Is it free? Yes. The server is open source under the MIT license, the Search Console API has no charge, and the Google Cloud project needs no billing account.

Which AI assistants does it work with? Any MCP client: Claude Desktop, Claude Code, Cursor, Windsurf, VS Code in agent mode, OpenAI Codex CLI and others, over stdio or streamable HTTP.

Can it change or break my site? No. It reads Search Console reports. With write access enabled it can add or remove properties and submit or delete sitemaps in Search Console — nothing on your website itself.

How is it different from exporting to a spreadsheet? You ask a question and get the answer. The server fetches, merges spelling variants, runs the analysis and returns a short table, capped so it never floods your AI's context.

Does it support Search Console's newest report options? The 24-hour view (hourly points, including preliminary data) and the hourly, daily, weekly and monthly granularity are all here: hourly_performance with hours=24, and granularity on performance_overview and history_trend. The newer split of web search into text-based and multimodal (Google Lens, Circle to Search) exists only in the Search Console UI; Google's API does not return it yet, so no MCP server can.

Does it have the Page indexing, Core Web Vitals or Links reports? No — Google does not offer those through its API, so no MCP server can. Per-URL index status is available through the inspection tools.

How far back does the data go? 16 months from Google. Without limit once you start syncing history locally.

Do I need to know Python? No. uvx runs everything; you only edit one configuration file.

Development

git clone https://github.com/mamrrez/gsc-mcp-full && cd gsc-mcp-full
uv venv && uv pip install -e ".[dev,all]"
uv run pytest        # no network or credentials needed
uv run ruff check

Contributions are welcome, especially language rules and real query samples — see CONTRIBUTING.md.

License

MIT © Mohammadreza (mamrrez)

This project is not affiliated with or endorsed by Google. Google Search Console is a trademark of Google LLC.

Available Tools

37 tools
add_propertyB
Idempotent

Add a property to this account (needs GSC_ALLOW_WRITE=1). Verification still happens in Search Console.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (non-destructive, idempotent, open-world write). The description adds real value beyond them: the required GSC_ALLOW_WRITE=1 environment flag and the caveat that verification occurs separately in Search Console, both of which an agent needs to invoke it correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with the core action front-loaded. The parenthetical prerequisite is slightly disruptive but still efficient; no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no explanation, and the prerequisite plus verification caveat are covered. However, with a mutation tool and an undocumented required parameter, the description leaves the agent guessing about site_url format and no format examples are given.

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?

The single parameter site_url has 0% schema description coverage, so the description carries the burden but does nothing to clarify it – no format guidance (e.g., domain property vs URL-prefix syntax), which is a common source of error for GSC properties. It fails to compensate for the coverage 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?

States a specific verb+resource ('Add a property to this account'), which clearly distinguishes it from list_properties/get_property/remove_property siblings. It doesn't explicitly name those siblings, so it falls just short of a 5.

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 implies when to use it (creating a new property), and it notes that verification must still happen in Search Console, but it never states when to prefer this over alternatives or what preconditions guarantee success beyond the env flag. Usage is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

brand_splitB
Read-onlyIdempotent

Brand vs non-brand traffic. Give the brand in every script it is searched in, comma-separated (e.g. "toyota, تویوتا, トヨタ"). Each term matches its spelling variants, as whole words; with level=loose a term of 4+ characters also matches when glued to its neighbours (toyotacamry).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
levelNoloose
sourceNoapi
end_dateNo
max_rowsNo
site_urlYes
start_dateNo
brand_termsYes
search_typeNoweb

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds real behavioral detail the annotations cannot: terms match spelling variants as whole words, and level=loose lets a 4+ character term match when glued to neighbours (toyotacamry). That rule is genuinely useful and non-obvious.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no filler, and the core concept is front-loaded. The opening sentence is a bare noun fragment rather than a full statement, which costs a point but is still efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no prose, but for a 9-parameter tool with 0% schema coverage the description covers only two parameters. Missing date-window, row-cap, source, and search_type semantics leave the agent guessing on the majority of inputs.

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 0%, so the description must carry the load. It does explain brand_terms (comma-separated, multiple scripts/spellings) and the level enum behavior, but leaves days, source, max_rows, search_type, site_url, and start/end_date entirely unexplained. Partial compensation only.

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 opening fragment "Brand vs non-brand traffic" plus the brand_terms guidance makes clear the tool segments traffic into brand and non-brand buckets. The verb is implied rather than stated (splitting/classifying), and no sibling is named for differentiation, keeping it below a 5.

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?

There is no explicit when-to-use, when-not-to-use, or alternative routing. With 35+ siblings such as query_variants, top_terms, and find_cannibalization, the agent gets no signal about when brand_split is the right pick over those.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

build_query_regexA
Read-onlyIdempotent

Build a Search Console regex for a term that works in any script and matches its common spellings.

Use the result as query_regex in other tools or paste it into the Search Console UI (regex filter). RE2's \b is ASCII-only, so this uses Unicode-safe boundaries; Arabic script gets ی/ي, ک/ك, ه/ة, ا/أ/إ/آ classes with optional vowel marks and half-spaces; digits match Persian, Arabic-Indic and full-width forms; Cyrillic е/ё; case-insensitive. loose=True also lets words run together. Accent and kana variants are not covered.

ParametersJSON Schema
NameRequiredDescriptionDefault
termYes
looseNo
whole_wordNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations by disclosing the RE2 ASCII-only \b rationale, the exact script-specific classes generated (Arabic ی/ي, ک/ك, ه/ة, Cyrillic е/ё), digit form handling, case-insensitivity, what loose=True does, and explicit limitations (accent and kana variants not covered). This is unusually rich behavioral context for a pure-computation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and usage, then implementation detail; every sentence adds real information about matching behavior. Slightly dense with script-specific minutiae, but the complexity of the tool justifies it.

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?

An output schema exists, so return format need not be explained. Given the tool's complexity, the description covers purpose, usage, matching behavior, edge cases, and limitations thoroughly; nothing an agent needs to invoke it correctly 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 0%, so the description must carry parameter meaning. It explains loose=True ('lets words run together') and implies boundary handling via the whole_word concept, but never explicitly defines the whole_word parameter or the required term's format beyond 'a term'.

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 verb and resource: builds a Search Console regex for a term, with Unicode/spelling-variant scope. It is immediately distinguishable from sibling tools like query_variants or top_terms, which produce data rather than regex patterns.

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?

Explicitly states how to use the output: 'Use the result as query_regex in other tools or paste it into the Search Console UI (regex filter).' This gives clear context, though it does not name the specific sibling tools that accept query_regex or state when-not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_periodsB
Read-onlyIdempotent

Compare a period with an earlier one; biggest movers first.

compare_to: previous (the same number of days just before) | year_ago (the same calendar dates last year) | 52_weeks (364 days back, weekdays aligned) | custom (give previous_start and previous_end). dimension: query, page, country, device or searchAppearance. Queries are matched across spellings.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
levelNostandard
limitNo
end_dateNo
site_urlYes
dimensionNoquery
compare_toNoprevious
start_dateNo
page_filterNo
search_typeNoweb
previous_endNo
query_filterNo
previous_startNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds two useful behavioral facts — results are ordered by biggest movers and queries are matched across spellings — but says nothing about rate limits, result volume, or what happens when compare periods overlap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose and ordering behavior, then moves into parameter enumeration with no filler. The dense inline lists are compact, though slightly cramped to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. However, for a 13-parameter analytical tool with zero schema coverage, the description leaves more than half the parameters unexplained and gives no guidance on level, search_type, or filter interactions.

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 0% across 13 parameters, so the description carries the full burden and only partly does so. It fully enumerates compare_to's four modes and dimension's five values (neither of which appears as an enum in the schema) and notes custom's prerequisite params — genuinely valuable — but days, level, limit, site_url, search_type, and the three filter params remain undocumented.

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?

States a specific verb and resource ('Compare a period with an earlier one') plus an output-shape detail ('biggest movers first'), so the agent knows what it returns. It does not explicitly distinguish itself from the sibling history_compare, which likely covers similar ground, so it falls short of a 5.

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 gives real guidance on one decision point: compare_to values and the fact that 'custom' requires previous_start/previous_end. But it never says when to choose this tool over performance_overview, query_search_analytics, or history_compare, so usage is implied rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

content_moversB
Read-onlyIdempotent

Pages (or queries) that lost or gained ≥ threshold of their clicks vs an earlier period.

compare_to: previous | year_ago (same calendar dates) | 52_weeks (weekdays aligned). Decayed = dropped, rising = grew, lost = had clicks before and none now, new = the opposite.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
limitNo
sourceNoapi
end_dateNo
max_rowsNo
site_urlYes
dimensionNopage
thresholdNo
compare_toNoprevious
start_dateNo
search_typeNoweb
min_previous_clicksNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as a read-only, idempotent, open-world, non-destructive operation. The description adds useful behavioral context by defining the result categories (decayed, rising, lost, new) and the comparison modes. It does not discuss auth requirements, rate limits, or pagination, but with safety annotations present this is a reasonable level of detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the core purpose. The subsequent lines efficiently define compare_to values and output categories. It wastes little space, though it could be organized slightly more clearly for an agent scanning parameter semantics.

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 12 parameters, 0% schema description coverage, and no parameter-level documentation in the description. Although an output schema exists and annotations cover the safety profile, the description does not sufficiently explain how to invoke the tool or how it differs from sibling analytics tools. It is incomplete for a parameter-heavy, open-world reporting operation.

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 0% and there are 12 parameters, so the description carries a heavy compensation burden. It explains compare_to options (which the schema does not enumerate) and hints at dimension via 'Pages (or queries)', but leaves days, limit, source, max_rows, start_date, end_date, search_type, and min_previous_clicks entirely unexplained. The coverage is too sparse for a tool of this complexity.

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?

States a specific report: pages or queries whose clicks moved by at least a threshold versus an earlier period. The added category definitions (decayed, rising, lost, new) clarify what the output represents. It does not explicitly distinguish itself from sibling tools such as compare_periods, but the core purpose is clear.

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?

Provides the available compare_to modes and their meanings, which helps an agent choose how to compare periods. However, it does not say when to use this tool versus alternatives like compare_periods, striking_distance, or low_ctr_opportunities. Usage is implied rather than explicitly guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

data_freshnessC
Read-onlyIdempotent

Which recent days are final and which are still changing, for daily and hourly data.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes
search_typeNoweb

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds some domain semantics about final versus changing recent days, but it does not disclose auth requirements, rate limits, or other behavioral constraints beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted words. It is appropriately sized, though its brevity contributes to the gaps in parameter and usage guidance.

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?

An output schema exists, so return values need not be described, and annotations cover safety. However, with 0% schema coverage, the description should compensate for parameter meaning and usage guidance, which it does not. An agent lacks enough context to invoke the tool confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for two parameters: required site_url and optional search_type with default 'web'. The description does not explain what either parameter means or what values are expected. The phrase 'daily and hourly data' does not clearly map to search_type or compensate for the missing schema documentation.

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 states a clear query purpose: identifying which recent days are final versus still changing, for daily and hourly data. It is understandable without opening the schema, but it does not distinguish this tool from related siblings such as history_status or performance_overview.

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?

There is no explicit guidance on when to use this tool, when not to use it, or which sibling tool to choose instead. The description implies a freshness-check use case but leaves the agent to infer the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_sitemapA
DestructiveIdempotent

Remove a sitemap from Search Console (needs GSC_ALLOW_WRITE=1). The file itself is untouched.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes
sitemap_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds high-value context beyond them: the required write-enable flag and the crucial clarification that 'The file itself is untouched' — directly countering the intuition that a destructive delete removes the file.

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 tight sentences with zero filler, front-loading the action and immediately following with the two facts an agent most needs (the env flag and the file-safe behavior).

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?

An output schema exists so return values need no explanation, and the write prerequisite plus the 'file untouched' clarification cover the key behavioral risks for a destructive tool. Only the parameter meanings remain unaddressed.

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 0% for two required parameters (site_url, sitemap_url), and the description supplies no meaning for either — no format, no distinction between the property and the sitemap. It fails to compensate for the coverage gap, though the names are largely self-describing.

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 verb and resource ('Remove a sitemap from Search Console'), which cleanly distinguishes it from siblings like submit_sitemap, list_sitemaps, and get_sitemap. An agent can identify the operation without opening the 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?

Provides the non-obvious precondition that GSC_ALLOW_WRITE=1 must be set, which is real usage guidance. It does not, however, contrast with alternatives (e.g., why delete vs. just stop submitting) or state when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_cannibalizationA
Read-onlyIdempotent

Queries where two or more of your pages compete, ranked by impressions going to the non-best page.

Spelling variants of a query are merged first, so «خرید ماشین» on page A and «خريد ماشين» on page B is caught. min_share is the impression share a page needs to count as competing.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
levelNostandard
limitNo
sourceNoapi
end_dateNo
max_rowsNo
site_urlYes
min_shareNo
start_dateNo
search_typeNoweb
query_filterNo
min_impressionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the read-only, idempotent, open-world safety profile, but the description adds genuinely non-obvious behavior: spelling variants of a query are merged before comparison, and results are ranked by wasted impressions. That is real behavioral context beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core definition, then the deduplication rule, then the min_share definition — no filler. The mid-sentence line breaks and the guillemet example add minor noise but the sizing is appropriate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter tool, this is only partially complete: the purpose and one key parameter are covered, and an output schema exists so return values need no explanation. However, most tunable parameters and any usage routing are absent, leaving an agent unable to reason about level, source, or date-window behavior.

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 0% across 12 parameters, so the description carries the burden of explaining them — yet it clarifies only min_share. days, level, source, search_type, limit, max_rows, query_filter, min_impressions, and the date fields are all left undocumented, and level/source/search_type have no enum hints anywhere.

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 analytical operation on a named SEO concept: pages competing on the same query, ranked by impressions lost to the non-best page. This is clearly distinguishable from neighbors like query_variants, striking_distance, or queries_for_page.

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 what the output means but never says when to reach for this tool versus sibling diagnostics (e.g., query_variants for spelling issues, striking_distance for ranking opportunities). No prerequisites or exclusions are given, leaving routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_capabilitiesA
Read-onlyIdempotent

Auth status, scope, write access, history coverage and the list of tools. Call this first when unsure.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=true), so the description's burden is lower. It does add useful content scope by naming the returned facts, but since an output schema exists that already documents the response shape, this disclosure is partly redundant and adds only moderate behavioral value.

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 fragments, zero filler, and the payload summary is front-loaded ahead of the call-order advice. 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?

With rich annotations, a full output schema, and no parameters, this simple discovery tool needs little more than what is given. The description tells the agent what facts it returns and when to reach for it, which is sufficient for correct invocation.

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 takes zero parameters, so there are no parameter semantics to document and the baseline of 4 applies. The description does not misleadingly imply any inputs.

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 enumerates the specific payload of the tool: auth status, scope, write access, history coverage, and the tool list. That is concrete enough for an agent to know this is a capabilities/diagnostics probe rather than a data-query tool. It does not name a sibling it overlaps with, but its role is distinctive among the query-oriented siblings.

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?

"Call this first when unsure" gives an explicit trigger condition and a preferred ordering relative to the rest of the toolset. It lacks an explicit when-not clause or named alternatives, but the guidance is actionable as written.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_propertyB
Read-onlyIdempotent

Details of one property (exact URL and permission level). Accepts loose input like example.com.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds one genuinely useful behavioral trait - input normalization of loose values like 'example.com' - but no auth, rate-limit, or error context.

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, front-loaded with the returned data and followed by the input-handling note. Nothing is wasted.

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?

An output schema exists, so return values need not be described, and annotations cover the read-only/idempotent profile. For a single-parameter lookup the description is nearly sufficient, with only the usage-vs-siblings decision left unstated.

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 0%, so the description must carry meaning, and it does partially by clarifying that site_url tolerates loose input. It does not state the expected canonical format or how normalization affects matching, leaving a gap against the compensation 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?

States a specific verb+resource: retrieve details (exact URL and permission level) of one property. The word 'one' implicitly distinguishes it from list_properties, but no sibling is named explicitly, keeping it short of a 5.

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?

Gives input-format guidance ('accepts loose input like example.com') but no when-to-use, when-not, or alternative routing. An agent cannot tell from this text why it would choose get_property over list_properties or inspect_url without reading other definitions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sitemapB
Read-onlyIdempotent

Details of one sitemap: submission/download dates, errors, warnings, per-type URL counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes
sitemap_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is fully covered. The description adds the shape of returned data, but with an output schema present that is largely duplicate information rather than new behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence fragment with zero filler and the resource named first. It is efficient, though the telegraphic style omits an explicit verb.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be spelled out, and annotations carry the safety profile. However, with 0% parameter coverage and no usage guidance, an agent still lacks enough to invoke this confidently against its many siblings.

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 0% and both required parameters (site_url, sitemap_url) are bare strings with no descriptions. The description does not say what either parameter accepts or the relationship between them, so it fails to compensate for the schema 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?

States the resource ('one sitemap') and enumerates the specific payload it returns (submission/download dates, errors, warnings, per-type URL counts). 'One sitemap' implicitly distinguishes it from the sibling list_sitemaps, though no sibling is named explicitly.

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?

No statement of when to use this tool versus list_sitemaps, submit_sitemap, or delete_sitemap, and no prerequisites (e.g., needing a verified property). Usage must be inferred from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

history_compareB
Read-onlyIdempotent

Compare two stored periods (e.g. this quarter vs the same quarter two years ago) — beyond the API's 16 months.

dimension: query, page, country or device.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
end_dateYes
site_urlYes
dimensionNoquery
start_dateYes
search_typeNoweb
previous_endYes
previous_startYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful context that this reads stored history rather than the live API, but says nothing about retrieval cost, freshness of stored data, or how the two periods are aligned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose and the example are front-loaded in one tight sentence, with no wasted prose. The dangling 'dimension: query, page, country or device' fragment is the only structural weakness, reading like a stray note rather than integrated guidance.

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?

Although an output schema exists (so return values need not be explained), the tool has 8 parameters with no schema descriptions and only one of them partially addressed in prose. For a comparison tool whose correctness depends on correctly pairing start/end with previous_start/previous_end, the definition leaves too much implicit.

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 0% across 8 parameters, so the description carries the full burden and largely fails. It only clarifies that 'dimension' accepts query/page/country/device (values not enumerated in the schema), leaving site_url, start_date, end_date, previous_start, previous_end, limit, and search_type completely uninterpreted.

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 gives a specific verb ('Compare') and resource ('two stored periods') with a concrete example of what a comparison looks like. The phrase 'beyond the API's 16 months' signals this operates on locally stored history rather than live data. It falls short of a 5 because it does not distinguish itself from the sibling 'compare_periods', which an agent could easily confuse it with.

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 only implied: the 'beyond the API's 16 months' clause hints that this is the tool for periods the live API cannot cover. There is no explicit when-to-use/when-not statement, and no mention of the competing 'compare_periods' sibling, so the agent must infer the routing decision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

history_queryB
Read-onlyIdempotent

Query the local history for any date range, grouped by dimensions (queries merged across spellings).

dimensions: query, page, country, device, date. query_contains matches the multilingual match key, so «ماشين» finds «ماشین» and 空调 works without spaces.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
deviceNo
countryNo
end_dateYes
site_urlYes
dimensionsNoquery
start_dateYes
search_typeNoweb
page_containsNo
query_containsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safe read-only/idempotent profile, so the description rightly spends its words elsewhere: it discloses that queries are merged across spellings and that matching is done on a multilingual match key (e.g. Arabic diacritics, spaceless CJK). That is real behavioral context beyond the annotations, though it omits any note on default limit/pagination behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short paragraphs, front-loaded with the core purpose and then the parameter hints. Every sentence earns its place; only the trailing newline/formatting is slightly rough.

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?

An output schema exists so return values need not be described. However, for a 10-parameter tool with 0% schema coverage and no usage guidance, the description is far from sufficient: an agent cannot confidently fill eight of the ten arguments from the text alone.

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 0% across 10 parameters, so the description carries the full burden. It explains the values accepted by 'dimensions' and the matching semantics of 'query_contains', which is genuinely useful, but leaves site_url, start_date/end_date format, search_type, device, country, page_contains, and limit entirely undocumented.

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?

States a specific verb and resource ('query the local history') plus a scope qualifier ('grouped by dimensions'), which tells the agent this is an aggregation/grouping query. It does not, however, differentiate itself from close siblings such as history_trend, history_compare, or history_sql, which the agent must otherwise infer.

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?

There is no when-to-use or when-not-to-use guidance and no mention of the sibling alternatives in the same history_* family. The agent is left to infer that this is the general-purpose grouped-history tool rather than history_trend/history_compare/history_sql.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

history_sqlB
Read-onlyIdempotent

Run a read-only SELECT on the history database. Table rows (site, search_type, date, query, qkey, page, country, device, clicks, impressions, position); sync_days. qkey is the multilingual match key.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real value beyond that: it exposes the data model (tables, columns) and the semantic meaning of qkey as the multilingual match key. It stops short of disclosing row caps, cost, or query restrictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and read-only constraint, followed by a compact table/column inventory. Efficient and well-ordered, with only the brief qkey clarification as an addendum.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a raw-SQL tool with an output schema (so return values need no explanation) and full annotation coverage, the description supplies the critical data model. What it omits is usage context relative to the numerous structured history/analytics siblings, leaving the agent to guess when raw SQL is the right choice.

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 0%, so the description must carry the burden. It does document the queryable schema, which is essential for writing the `sql` parameter, but it never explains the `limit` parameter or any syntax expectations for the SQL string.

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?

States a specific verb and resource ("Run a read-only SELECT on the history database") and then names the queryable tables and their columns, so the agent knows exactly what it can query. It does not explicitly distinguish itself from siblings like history_query or query_search_analytics, so it falls short of a 5.

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?

There is no guidance on when to reach for raw SQL versus the many structured siblings (history_query, history_trend, query_search_analytics). The only constraint given is "read-only SELECT," which is a restriction, not a routing rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

history_statusC
Read-onlyIdempotent

What the local history contains: per property and search type, first/last day, rows, final days.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety behavior is covered. The description adds that it reports coverage metadata (first/last day, rows, final days), which is useful context about the return content beyond mere 'status', but no auth requirements or limitations are mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise sentence, front-loaded with the subject. No wasted words, though the fragment structure is slightly terse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a read-only, idempotent tool with an output schema, the description need not explain return values. However, it should clarify the relationship with sibling history_* tools and the optional site_url semantics. It is minimally adequate but leaves gaps.

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 0% for the single site_url parameter. The description does not explain what site_url controls or whether omitting it returns all properties. Baseline 3 when a single parameter exists and schema adds nothing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states what the tool reports (local history contents: per property, search type, first/last day, rows, final days) but does not use a clear verb like 'retrieve' or 'list' and offers no differentiation from sibling tools like history_query or history_trend. An agent must infer that this is a status/metadata report rather than a data-fetching tool.

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?

No guidance on when to use this tool versus history_query, history_trend, history_compare, or history_sql. The agent is left to guess based on the name and vague description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

history_trendB
Read-onlyIdempotent

Clicks/impressions/CTR/position per day, ISO week or month from the local history — any length of time.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYes
site_urlYes
start_dateYes
granularityNomonth
search_typeNoweb
page_containsNo
query_containsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that data comes from local history and supports any length of time, which is useful behavioral context, but it does not cover pagination, rate limits, auth needs, or result behavior.

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?

It is a single, front-loaded sentence that states the core metrics, granularity choices, data source, and range flexibility without any filler. Every phrase earns its place.

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?

For a 7-parameter tool with 0% schema description coverage and several sibling history tools, the description is too thin. While it correctly avoids explaining return values because an output schema exists, it omits parameter formats, filter behavior, and when to prefer this over adjacent tools.

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 0% across 7 parameters, so the description must compensate. It only clarifies the granularity options ('per day, ISO week or month'), leaving site_url, start_date, end_date formats, search_type, page_contains, and query_contains undocumented in both schema and description.

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 names the metrics returned (clicks/impressions/CTR/position), the time grouping options, and the local-history source. It is understandable as a trend/performance-over-time tool, though it does not explicitly differentiate itself from siblings such as history_query 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 gives no guidance on when to use this tool versus alternatives like history_query, history_compare, performance_overview, or query_search_analytics. It also omits prerequisites or conditions for choosing local history over other data sources.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hourly_performanceA
Read-onlyIdempotent

Hourly data for the last 10 days — Search Console's 24-hour view, and the only way to get true LOCAL days.

hours=24 reproduces the Performance report's 24-hour view: the most recent 24 hourly points, including preliminary ones. Otherwise the last days (max 10) are returned. Search Console's daily numbers are Pacific-Time days; with timezone= (e.g. Asia/Tehran, Asia/Tokyo) the hours are re-cut into local days (by=day) or listed per local hour (by=hour).

ParametersJSON Schema
NameRequiredDescriptionDefault
byNoday
daysNo
hoursNo
site_urlYes
timezoneNo
page_filterNo
search_typeNoweb
query_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so safety is covered. The description adds real behavioral context beyond them: the 10-day cap, that the most recent points are preliminary/incomplete, and that Search Console's native daily numbers are Pacific-Time days while timezone re-cuts them into local days/hours.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded paragraphs: the core identity statement, the hours=24 vs days branch, and the timezone nuance. Sentence economy is good, though the timezone paragraph is dense and could be marginally tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be described, and the temporal/timezone semantics are well covered. However, with 8 parameters at 0% schema description coverage and no mention of the filter or search-type parameters, the description leaves notable gaps for an otherwise complex tool.

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 0% across 8 parameters, so the description must carry parameter meaning. It explains by, days, hours, and timezone well (including the local-time re-cutting semantics), but says nothing about site_url, page_filter, query_filter, or search_type, leaving half the parameters undocumented.

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+resource (hourly Search Console performance data for the last 10 days) and explicitly differentiates its niche from siblings: it reproduces the Performance report's 24-hour view and is 'the only way to get true LOCAL days.' An agent can distinguish it from performance_overview and query_search_analytics without opening the 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?

It clearly specifies the branching condition: hours=24 reproduces the 24-hour report view including preliminary points, otherwise the last `days` (max 10) are returned. The timezone behavior (re-cut into local days via by=day or per local hour via by=hour) tells the agent when to use which mode. No explicit exclusion or sibling routing by name, but usage context is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

indexing_summaryA
Read-onlyIdempotent

Problems only: which of the given URLs are not indexed or have structured-data failures, and why. Up to 50 URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYes
languageNoen-US
site_urlYes
concurrencyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds useful behavioral context beyond annotations by stating the result is filtered to problems only, includes reasons, and is capped at 50 URLs.

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 extremely concise and front-loaded with the key constraint 'Problems only'. Every clause adds useful information, and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return format need not be explained. The description covers purpose, output filtering, and the URL limit, but leaves the 0%-documented parameters largely unexplained despite having four parameters and two required ones.

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 0% for four parameters. The description only vaguely references 'given URLs' and the 50-URL cap; it does not explain site_url, language, or concurrency, so it fails to compensate for the missing schema documentation.

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 a specific diagnostic outcome: identifying which given URLs are not indexed or have structured-data failures, plus the reason. It does not explicitly name or compare against sibling tools like inspect_urls, so sibling differentiation is left implicit.

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 phrase 'Problems only' implies this tool should be used to surface problematic URLs rather than complete inspection status, and 'Up to 50 URLs' states a hard limit. However, it gives no explicit when-to-use versus inspect_urls or other siblings, nor prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspection_quotaA
Read-onlyIdempotent

How many URL inspections this server has used today for a property (Google allows ~2,000/day).

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/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, so safety is covered. The description adds genuine external context the annotations lack: the daily quota ceiling (~2,000/day) and the 'today' reset window, which is exactly the behavioral fact 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?

One sentence, front-loaded with the core purpose and ending with the quota context. No filler; every clause carries useful information.

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 single-parameter read tool with an output schema (which handles return values) and annotations covering safety, the description is nearly complete. A brief note on parameter format would close the remaining 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 coverage is 0% and the single site_url parameter is undocumented, so the description must compensate. 'For a property' loosely maps the parameter to a property identifier, but it doesn't clarify the expected URL/identifier format, so this only partially fills the 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?

States a specific resource (URL inspection quota) and scope (today, per property), which is clearly distinct from the sibling inspect_url/inspect_urls tools that actually perform inspections. The verb is implicit in 'How many...has used' but the intent is unambiguous.

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 only implied: the '(Google allows ~2,000/day)' note hints you should check this before bulk inspections, but the description never states when to call it, that it's a pre-flight check, or which sibling it complements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_urlB
Read-onlyIdempotent

Full URL Inspection for one page: index verdict, crawl, canonical, robots, sitemaps, rich results, mobile.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoen-US
page_urlYes
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, openWorld, so the safety profile is fully covered. The description adds what content the inspection returns, which is useful, but says nothing about quotas (note the sibling inspection_quota), permissions, or latency that would materially affect invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the facet list is compact and informative. It is a noun phrase rather than a sentence, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is not required, and annotations carry the safety profile. However, for a two-required-param tool with zero schema descriptions, the missing explanation of site_url vs page_url leaves the definition incomplete for correct invocation.

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 coverage is 0% and the description explains none of the three parameters. The critical distinction between site_url (the property) and page_url (the page being inspected) is left entirely unexplained, which is exactly the ambiguity an agent needs resolved for URL Inspection tools.

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?

States a specific verb+resource (inspect a URL) and enumerates the inspection facets covered (index verdict, crawl, canonical, robots, sitemaps, rich results, mobile). The phrase 'for one page' implicitly separates it from the sibling inspect_urls, but does not name that sibling explicitly.

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 only implied: 'for one page' hints that batch inspection belongs to inspect_urls, but the description never states when to prefer this over the sibling or any prerequisites (e.g., property ownership/verification). Adequate but leaves routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inspect_urlsB
Read-onlyIdempotent

Inspect up to 50 URLs in parallel (comma- or newline-separated). Quota is checked first.

Columns: index is the indexing verdict, rich results the structured-data verdict — a page can PASS one and FAIL the other. URLs not reached within the time budget are marked and can be re-sent.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYes
languageNoen-US
site_urlYes
concurrencyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, and non-destructive safety, so the bar is lower. The description adds genuinely useful operational context: quota is checked first, and URLs not reached within the time budget are marked and can be re-sent. It does not, however, describe failure modes for invalid URLs or what a partial-batch outcome looks like beyond the 'marked' note.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and batch limit, then adds a compact column-semantics note. The two-verdict explanation ('a page can PASS one and FAIL the other') is a slightly unusual digression but earns its place by preventing misinterpretation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation isn't required, which is a plus. But with 0% parameter description coverage across 4 params and no explicit quorouting vs the inspect_url sibling, the description leaves key calling details for the agent to infer.

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 0%, so the description must compensate for four undocumented parameters. It only clarifies the 'urls' format (comma-/newline-separated), leaving site_url, language, and concurrency entirely unexplained. This is a substantial gap given zero schema-level parameter documentation.

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?

States a specific verb and resource ('Inspect up to 50 URLs in parallel') and clarifies the batch scope, distinguishing it from the singular sibling inspect_url. However, it doesn't explicitly say how it differs from inspect_url, so the sibling separation is inferred from the name and 'in parallel' phrasing rather than stated.

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 implies bulk usage ('up to 50 URLs in parallel', comma/newline separated) and mentions quota checking first, but does not explicitly state when to use this over inspect_url, when to avoid it, or prerequisites. Usage context is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

keyboard_mistypesA
Read-onlyIdempotent

Queries typed with the keyboard on the wrong layout (e.g. "ovdn lhadk" = «خرید ماشین» on a Persian keyboard).

A hit is reported only when the remapped text is a query that really appears in the data, so the list is precise. include_unmatched=True also lists vowel-less Latin queries that map cleanly onto a layout (more findings, some false positives). layouts: any of fa, fa2 (the two Persian layouts in common use), ar, ru, he.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
sourceNoapi
layoutsNofa,fa2,ar,ru,he
end_dateNo
max_rowsNo
site_urlYes
start_dateNo
search_typeNoweb
include_unmatchedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real depth beyond that: it guarantees precision ('a hit is reported only when the remapped text is a query that really appears in the data') and warns that include_unmatched=True introduces false positives. That precision/precision-loss contract is exactly the kind of behavioral context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core concept in sentence one, then layers the precision rule and the parameter caveat. The illustrative example (rather than abstract prose) makes the definition compact and usable. Slightly dense, but every sentence adds information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists, so return-value explanation is unnecessary, and the tool's core idea plus the layouts/flag semantics are covered. Still incomplete for a 9-parameter tool: no sibling routing and six parameters are left entirely unaddressed, so an agent must guess at date-range, source, and row-limit behavior.

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 coverage is 0% for 9 parameters, so the description must carry the load. It meaningfully documents only two: layouts (value list and what fa/fa2 mean) and include_unmatched. Key params such as days, source, search_type, max_rows, start_date, and end_date are undocumented in both schema and description, leaving most of the surface unexplained.

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 verb and resource (queries typed on the wrong keyboard layout) and immediately grounds it with a concrete example ('ovdn lhadk' = «خرید ماشین»). This is clearly distinguishable from the sibling analysis tools (query_variants, language_breakdown, top_terms), so an agent can tell what class of finding this returns without opening the schema.

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 explains the include_unmatched tradeoff well ('more findings, some false positives'), which is genuine usage guidance for that flag. However, it never states when to reach for this tool over neighbors like query_variants or language_breakdown, and gives no prerequisites or scoping advice; usage is mostly implied by the concept.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

language_breakdownC
Read-onlyIdempotent

Share of clicks and impressions by the script/language of the query (Persian vs Arabic vs Latin…).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
sourceNoapi
end_dateNo
max_rowsNo
site_urlYes
start_dateNo
search_typeNoweb

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered structurally. The description adds only the metric definition and no behavioral context such as date-range defaults, row limits, or freshness/caveats beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler; it states the measure and the grouping dimension immediately. It is tight, though it could have spent one more clause on usage rather than examples.

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?

An output schema exists, so return values need not be explained. However, for a 7-parameter tool with zero parameter documentation, no date-window behavior, and no routing guidance among many similar analytics siblings, the description is materially incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Seven parameters with 0% schema description coverage, and the description mentions none of them. Fields like days, max_rows, source, search_type, start_date and end_date are completely undocumented in both the schema and the description, leaving the agent to guess at semantics.

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 names a specific metric (share of clicks and impressions) and a specific dimension (script/language of the query), with concrete examples (Persian vs Arabic vs Latin). It is clear what the tool computes, but it never distinguishes itself from siblings like query_search_analytics, top_terms, or brand_split.

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?

There is no when-to-use or when-not-to-use guidance and no named alternative. An agent cannot tell from the text why it would pick this over other segmentation tools such as brand_split or query_variants.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_propertiesA
Read-onlyIdempotent

List every Search Console property this account can see, with the permission level.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds that it includes permission level per property, but no pagination, rate limits, or result ordering details. Annotations do the heavy lifting here.

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?

Single sentence, front-loaded with the verb and resource. Zero waste, no redundancy.

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?

Output schema exists, so return values need not be described. The description adds the meaningful detail that permission level is returned, which helps an agent decide to call it. With annotations covering safety and output schema covering structure, this is nearly complete, though it could mention the lack of pagination.

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?

Zero parameters, so baseline is 4. The description correctly notes the tool takes no filtering criteria, which is consistent with the empty 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?

Specific verb + resource ('List every Search Console property this account can see') with additional scope qualifier (permission level). Clearly distinguishable from get_property (singular) in sibling list.

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 implies a broad enumeration use case, but provides no explicit guidance on when to use list_properties vs get_property or add_property. Usage is inferable from the verb 'list' but not spelled out.

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

Sitemaps submitted for a property, with errors/warnings and URL counts. Pass sitemap_index to list its children.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes
sitemap_indexNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds useful behavioral context about the returned data, specifically that results include errors/warnings and URL counts, which helps set expectations for the response.

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 concise sentences with no wasted words. The purpose and return content come first, followed by the key parameter usage, making it well front-loaded and easy to scan.

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 listing tool with a rich annotation set and an output schema, the description is largely complete. It covers the resource, returned contents, and the optional sitemap_index behavior, though sibling differentiation could be stronger.

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 0%, so the description must compensate. It explains sitemap_index well by stating that passing it lists children, but site_url is only implied by 'for a property' and is not explicitly named or clarified.

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 and scope: sitemaps submitted for a property, including errors/warnings and URL counts. It effectively distinguishes this as a listing tool for a property's sitemaps, though it does not explicitly name or contrast with sibling tools like get_sitemap or submit_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?

It provides a conditional usage hint: 'Pass sitemap_index to list its children.' However, it does not state when to use this tool versus alternatives such as get_sitemap, submit_sitemap, or delete_sitemap, leaving broader usage guidance implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

low_ctr_opportunitiesB
Read-onlyIdempotent

Query/page pairs on page one whose CTR is far below what their position should earn — title/snippet work.

Expected CTR is the site's own median per position when there is enough data, otherwise a benchmark curve; ratio=0.5 flags rows under half the expected CTR.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
limitNo
ratioNo
sourceNoapi
end_dateNo
max_rowsNo
site_urlYes
start_dateNo
search_typeNoweb
max_positionNo
query_filterNo
min_impressionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered. The description earns credit for disclosing the analytical methodology (site median per position when data suffices, otherwise a benchmark curve, and how ratio is applied), which is real behavior beyond the annotations. It says nothing about how the 'enough data' threshold is decided or about row limits/pagination, leaving those gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the core definition before the methodology. Every sentence carries information and nothing is padded. Only minor deduction for the methodology clause being formatted loosely rather than structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and annotations cover safety. But with 12 parameters at 0% schema coverage, the description is not complete enough for an agent to use the filtering knobs correctly. Adequate for the core concept, insufficient for invocation.

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 0% across 12 parameters, so the description carries the full burden, yet it only explains ratio ('0.5 flags rows under half the expected CTR'). It implicitly hints at max_position via 'page one' and at min_impressions via 'when there is enough data', but days, limit, source, search_type, start_date, end_date, max_rows and query_filter are entirely unexplained.

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?

States a specific verb+resource: query/page pairs on page one whose CTR underperforms their position, plus the diagnostic intent (title/snippet work). An agent can identify it as a CTR-anomaly detector. It does not explicitly distinguish itself from siblings like striking_distance or content_movers, which likely also surface underperformance, so it stops short of a 5.

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 rather than stated: the closing phrase 'title/snippet work' signals the remediation context, and 'page one' scopes it to visible results. There is no explicit when-to-use-vs-alternatives guidance, no mention of excluding pages still in striking distance, and no prerequisite notes beyond the required site_url.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pages_for_queryB
Read-onlyIdempotent

Which pages rank for one query — in each of its spellings — and how the impressions split between them.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
levelNostandard
limitNo
queryYes
end_dateNo
site_urlYes
start_dateNo
search_typeNoweb

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this a safe, idempotent, read-only, open-world operation, so the safety burden is covered. The description adds genuine behavioral context by noting it aggregates across spellings/variants and splits impressions between pages. It says nothing about date-range defaults (days=28), result limits, or auth requirements.

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 sentence, front-loaded with the core purpose and the two dimensions (spellings, impression split). Every clause carries meaning with no padding.

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?

With 8 parameters and zero schema description coverage, the definition is materially incomplete for invocation: default windows, the meaning of 'level', result limits, and date handling are all unaddressed. The output schema relieves it of explaining return values, but the input side remains a black box.

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 0% across 8 parameters, so the description carries the full explanatory burden. It only gestures at the query concept and impressions, leaving days, level, limit, start_date, end_date, and search_type entirely unexplained in both schema and prose.

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 gives a specific verb+resource: which pages rank for one query, split by spelling and impressions. This clearly positions it as the inverse of the sibling queries_for_page and distinct from query_variants. It stops short of naming an alternative explicitly, so it does not reach 5.

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?

There is no when-to-use or when-not-to-use guidance, and no alternatives are named. An agent must infer from the description alone that this is the page-side view of a query rather than the query-side view (queries_for_page).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

performance_overviewB
Read-onlyIdempotent

One-screen summary: totals, trend, top queries and pages, devices, countries, and how fresh the data is.

granularity: day, week, month or auto — the same choice as the Performance report's time-granularity menu (for hourly, use hourly_performance). auto picks day up to 31 days, week up to six months, then month.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
daysNo
end_dateNo
site_urlYes
start_dateNo
granularityNoauto
search_typeNoweb

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld, non-destructive, so the safety profile is covered. The description adds useful behavior — the output inventory and the auto-granularity thresholds — but says nothing about rate limits, property/permission requirements, or whether missing start/end dates fall back to 'days'. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the payload summary first, then the granularity caveat, so the agent reads the important routing detail early. It is short and mostly earns its place, though the line-broken formatting is slightly awkward.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the annotations cover safety. However, with 7 parameters at 0% schema coverage and a date-range/days interaction unexplained, the description leaves meaningful gaps for a tool whose main confusion point is date and granularity handling.

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 0% across 7 parameters, so the description must carry the load, yet it only explains granularity (its values and the auto behavior). site_url, top, days, start_date, end_date, and search_type are left entirely to schema defaults with no semantics or interaction rules (e.g., how start_date/end_date relate to days).

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 states a specific deliverable — a one-screen summary containing totals, trend, top queries/pages, devices, countries, and data freshness — which is a concrete resource description. It partially differentiates from siblings by naming hourly_performance for the hourly case, though it doesn't distinguish itself from query_search_analytics, compare_periods, or data_freshness.

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 a clear routing rule: use this for day/week/month granularity, and switch to hourly_performance for hourly data. The 'auto' explanation (day up to 31 days, week up to six months, then month) tells the agent what happens when granularity is left unspecified. It stops short of saying when to prefer this over compare_periods or the query-level tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

queries_for_pageA
Read-onlyIdempotent

Which queries send traffic to one page. Spelling variants are merged unless group_variants=False.

Give the exact page URL. If nothing matches exactly, pages whose URL contains the text are used instead and listed, so a path such as /blog/ works too.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
levelNostandard
limitNo
end_dateNo
page_urlYes
site_urlYes
start_dateNo
search_typeNoweb
group_variantsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuine behavioral context beyond that: spelling variants are merged by default (group_variants=False disables it) and near-match URLs are substituted and listed in results, which an agent could not infer from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the purpose, then the variant-merging caveat, then the URL-matching rule. Slightly awkward final clause ('and listed') but no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the two most consequential parameters are covered. Still, six unspecified parameters and no guidance on period/window semantics leave the definition only adequately complete for a 9-parameter analytics tool.

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 0% across 9 parameters, so the description carries the burden. It usefully documents page_url matching behavior and the group_variants toggle, but leaves days, level, limit, search_type, start_date and end_date entirely unexplained.

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?

States a specific verb+resource: 'Which queries send traffic to one page' clearly defines a queries-for-a-page report. It implicitly distinguishes from the inverse sibling pages_for_query, though it never names it explicitly.

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?

Explains how to supply page_url (exact URL, with substring fallback so paths like /blog/ work), which is practical invocation guidance. However, it never says when to use this tool versus pages_for_query or query_search_analytics, so sibling routing is left to inference.

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

Search Analytics rows with any dimensions and filters. The general-purpose query tool.

Args: site_url: property (sc-domain:example.com, https://example.com/ or just example.com). days / start_date / end_date: range; explicit dates (YYYY-MM-DD) win over days. dimensions: comma list of query, page, country, device, date, searchAppearance, hour. search_type: web, image, video, news, discover, googleNews. query_filter: a term in ANY language; case-insensitive, and matches its common spellings (ی/ي, ک/ك, half-space, vowel marks, Persian/Arabic digits, е/ё). query_regex / query_regex_exclude: raw RE2 regex (see build_query_regex for a safe one). page_filter: substring of the page URL; page_exact: the exact URL; page_filter_exclude: substring to leave out; page_regex: RE2 regex on the URL. country: ISO-3166-1 alpha-3 (IRN, USA…); device: DESKTOP, MOBILE, TABLET. data_state: all (matches the UI, default) or final. group_variants: merge spelling variants of the same query (only when dimensions=query). level: standard or loose grouping (loose also merges spacing and accent differences). sort_by: clicks, impressions, ctr, position — applied to the fetched rows; Google itself always returns the top rows by clicks. limit: rows shown. max_rows: rows fetched.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
levelNostandard
limitNo
deviceNo
countryNo
sort_byNoclicks
end_dateNo
max_rowsNo
site_urlYes
data_stateNo
dimensionsNoquery
page_exactNo
page_regexNo
start_dateNo
page_filterNo
query_regexNo
search_typeNoweb
query_filterNo
group_variantsNo
search_appearanceNo
page_filter_excludeNo
query_regex_excludeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safety profile is free. Beyond that the description discloses real behavioral nuance: sort_by is applied to the fetched rows while Google always returns top rows by clicks, data_state=all mirrors the UI, and grouping behavior differs by level. It does not discuss permissions or result size limits, but the added semantics are substantive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in two short sentences, then an argument list where nearly every line adds non-obvious semantics (spelling variants, sort vs. Google ordering, grouping). Dense, but little waste; the format is scannable rather than padded.

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 22-parameter tool with an output schema and rich annotations, the description supplies the parameter semantics and ordering caveats an agent needs. Remaining gaps (search_appearance filter, any limits on max_rows) are small relative to what is covered.

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?

Schema description coverage is 0% across 22 parameters, so the description carries the full documentation burden and mostly succeeds: it explains site_url formats, date-vs-days precedence, allowed dimension and search_type values, the multilingual/spelling-variant matching of query_filter, regex vs substring filters, ISO country codes, and the limit/max_rows split. Only search_appearance is undocumented as a filter, which is a minor omission against an otherwise thorough mapping.

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?

States a concrete verb+resource (query Search Analytics rows) and positions itself as 'the general-purpose query tool', which implicitly contrasts with the many specialized siblings (top_terms, queries_for_page, striking_distance). It stops short of naming a sibling it is chosen over, so an agent must still infer the boundary.

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 general-purpose query tool' implies it is the fallback when no specialized sibling fits, which is usable guidance. But there is no explicit when-to-use/when-not statement and no named alternative, so the routing decision is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_variantsA
Read-onlyIdempotent

Keywords that Search Console splits across several spellings, with their real combined totals.

Groups queries by a per-script match key: Persian/Arabic letter forms (ی/ي, ک/ك, ه/ة, ا/أ/إ/آ), half-space, vowel marks, digit scripts, kana width, case, separator punctuation — also inside mixed queries such as «خريد iphone 13». level=loose additionally merges spacing, accents (café/cafe), hiragana/katakana, Simplified/Traditional Chinese (with the zh extra). Only groups with at least min_variants spellings are shown. source=history uses the local store.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
levelNostandard
limitNo
sourceNoapi
end_dateNo
max_rowsNo
site_urlYes
start_dateNo
search_typeNoweb
min_variantsNo
query_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds genuine extra context: groups below min_variants are hidden, level=loose widens merging (spacing, accents, kana, Chinese variants), and source=history reads the local store rather than the API.

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?

Purpose is front-loaded in the first sentence, and the following sentences each earn their place by defining the grouping rule and the level/source behaviors. Dense but no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the read-only nature is annotated. However, with 11 parameters at 0% schema coverage and no usage/routing guidance, an agent still lacks enough information to pick sensible values for the undocumented parameters.

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 0% across 11 parameters, so the description must compensate and it only partially does: it explains level, min_variants and source semantics, but days, limit, max_rows, search_type, query_filter, start_date/end_date and site_url are left entirely to inference.

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?

Starts with a specific verb-and-resource framing ('Keywords that Search Console splits across several spellings, with their real combined totals') and details the grouping key, which distinguishes it from siblings like keyboard_mistypes and top_terms. It never names a sibling explicitly, so it stops short of a 5.

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?

There is no when-to-use / when-not-to-use guidance or named alternative. The description discusses level=loose and source=history as behavioral modes, which implies context, but an agent is not told when this tool should be chosen over top_terms or keyboard_mistypes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reauthenticateA
Idempotent

Forget the cached client and sign in again (switch Google accounts or scopes).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true, and openWorldHint=false, covering the safety profile. The description adds that it forgets the cached client and re-signs in, which is useful behavioral detail beyond annotations, but it does not explain auth requirements, session effects, or what happens to other cached state.

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 sentence that is front-loaded with the core action and includes only the necessary clarifying scope. Every word 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 tool is simple, has no parameters, and an output schema exists, so return values need not be described. Annotations cover the safety profile. The description adequately conveys the action and when to use it, though it could mention whether reauthentication invalidates existing sessions or requires user interaction.

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 takes zero parameters, so per the rubric the baseline is 4. The empty schema and 100% description coverage mean no parameter semantics are needed from the description.

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 verb and resource: 'Forget the cached client and sign in again.' It also clarifies the scope with '(switch Google accounts or scopes).' The sibling tools are all SEO/analytics operations, so this auth-related action is clearly distinguishable.

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 parenthetical '(switch Google accounts or scopes)' gives a clear trigger condition for when to use the tool. It does not list exclusions or alternatives, but the usage context is unambiguous for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_propertyA
DestructiveIdempotent

Remove a property from this account (needs GSC_ALLOW_WRITE=1). Data is not deleted at Google.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds two things the annotations do not: the write-gate requirement (GSC_ALLOW_WRITE=1) and the crucial scope clarification that removal only detaches the property from this account while Google retains the data. That materially changes how an agent should reason about the destructive flag.

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, front-loaded with the action and the gating constraint, with no filler. Every clause carries 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?

An output schema exists, so return values need no prose, and the description covers the precondition and the data-retention nuance. The remaining gap is the undocumented site_url parameter, but for a single-argument tool the definition is nearly complete.

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 0% for the single required parameter site_url, and the description never explains the expected URL format, whether trailing slashes or protocol variants matter, or whether it must match an existing listed property. With low coverage the description is supposed to compensate and it does not.

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?

States a specific verb ('Remove') and resource ('a property from this account'), making the operation unambiguous and clearly distinct from add_property, list_properties, and get_property. It does not explicitly name when it differs from delete_sitemap, but the verb+resource pairing is precise enough to route correctly.

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 supplies a hard precondition ('needs GSC_ALLOW_WRITE=1'), which is real usage guidance, but it never says when to choose this over siblings like delete_sitemap or what happens if the property is still verified. Usage is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

striking_distanceA
Read-onlyIdempotent

Queries ranking just off page one (default positions 8–20) with real demand — the quickest wins.

potential_clicks estimates extra clicks at position 5. Spelling variants are merged first.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
limitNo
sourceNoapi
end_dateNo
max_rowsNo
site_urlYes
start_dateNo
with_pagesNo
search_typeNoweb
max_positionNo
min_positionNo
query_filterNo
min_impressionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only/idempotent safety profile, so the bar is lower, and the description adds genuinely non-obvious behavior: potential_clicks is defined as estimated extra clicks at position 5, and spelling variants are merged before querying. These are real preprocessing/semantic details beyond the structured fields, though filtering and result-shaping behavior remain unexplained.

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 tight sentences, zero filler, with the core scoping constraint (position range) front-loaded. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, but for a 13-parameter tool at 0% schema coverage the definition leaves most parameter behavior uncovered. It is adequate for understanding purpose and a couple of key behaviors, not for calling the tool precisely.

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?

With 13 parameters and 0% schema description coverage, the description must carry the load but only incidentally touches two of them ('default positions 8–20' for min/max_position, 'real demand' for min_impressions). The other ten parameters (days, limit, source, dates, max_rows, with_pages, search_type, query_filter, site_url) are undocumented in both schema and description.

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?

States a specific verb and resource ('queries ranking just off page one, default positions 8–20') with the opportunity-seeking framing. It is clear what the tool returns, though it does not explicitly differentiate itself from near siblings like low_ctr_opportunities or find_cannibalization.

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 quickest wins' implies the intent (opportunity discovery) but there is no explicit when-to-use, when-not, or named alternative among the many sibling analytics tools. Usage is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_sitemapB
Idempotent

Submit (or resubmit) a sitemap URL (needs GSC_ALLOW_WRITE=1).

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes
sitemap_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=true, openWorldHint=true, destructiveHint=false, so safety and idempotency are covered. The description adds the operational enablement gate (GSC_ALLOW_WRITE=1), which is a genuine behavioral constraint not present in the annotations and is exactly the kind of auth/precondition context that earns credit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with the verb, resource, resubmit case, and precondition front-loaded; no filler. It is arguably too terse for a write tool, but nothing in it is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and annotations cover the safety profile. What remains missing is any explanation of the two required parameters and the target site/property context, which is a meaningful gap for a mutation tool.

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 0% for two required parameters, so the description carries the full burden. It only gestures at 'a sitemap URL' and never explains what site_url means (property vs. sitemap host) or how the two relate, leaving the required site_url parameter entirely undocumented.

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?

States a specific verb+resource pair ('Submit (or resubmit) a sitemap URL') and the resubmit nuance implies the upsert behavior an agent needs. It does not name sibling tools (delete_sitemap, get_sitemap, list_sitemaps) to disambiguate, so it falls short of a 5.

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 parenthetical '(needs GSC_ALLOW_WRITE=1)' gives a concrete precondition for calling the tool, which is real usage guidance. However, there is no when-to-use vs alternatives framing and no statement of when not to call it relative to delete_sitemap or list_sitemaps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sync_historyA
Idempotent

Copy Search Analytics rows into the local SQLite history, one day at a time (keeps data past 16 months).

Days already stored and final are skipped; recent or empty days are refreshed. dimensions defaults to query,page; add country,device for more detail (more rows). One call works for about 45 seconds and then reports how many days are left — call it again to continue, or run gsc-mcp-full sync SITE --days N in a terminal (no time limit; put it in cron to keep history growing).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
end_dateNo
site_urlYes
dimensionsNoquery,page
start_dateNo
search_typeNoweb
refresh_provisionalNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond annotations: the 45-second execution window, incremental resume behavior, skip-vs-refresh policy tied to finality/emptiness, and the 16-month retention rationale. Annotations only give readOnly=false, idempotent=true, openWorld=true, destructive=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then the retention rationale, then skip/refresh policy, then the continuation workflow. Dense but each clause carries operational information; slightly long but not wasteful given complexity.

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 7-param write tool with an output schema present, the description covers the critical behavior an agent needs: resumability, time budget, what is skipped vs refreshed. Omits coverage of four parameters but return shape is handled by the output schema.

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 coverage is 0%, so the description must carry the load. It explains 'dimensions' defaults to query,page with country/device as expansion (with 'more rows' tradeoff) and implicitly covers 'days' via the 16-month note, but leaves end_date, start_date, search_type, and refresh_provisional undocumented.

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 verb ('Copy'), resource ('Search Analytics rows'), and destination ('local SQLite history'). Distinguishes itself from siblings like query_search_analytics (live API query) and history_* (read from local history) by being the ingest path.

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 says when to use it ('keeps data past 16 months'), what gets skipped ('Days already stored and final'), and names the CLI alternative with its advantage ('no time limit; put it in cron'). The call-again-to-continue loop is spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

top_termsC
Read-onlyIdempotent

Most demanded words across all queries — works for Chinese/Japanese/Thai (no spaces) too.

Uses jieba / fugashi / pythainlp when installed (pip install gsc-mcp-full[zh] etc.), otherwise a script-aware fallback. Terms are merged across spellings.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
daysNo
sourceNoapi
end_dateNo
max_rowsNo
site_urlYes
start_dateNo
search_typeNoweb
query_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context about tokenization via jieba/fugashi/pythainlp, a script-aware fallback, and merging terms across spellings, but it does not disclose auth requirements, rate limits, or data freshness handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence front-loads the tool's purpose, and the follow-up sentence gives relevant language-processing context in a compact form. The pip-install detail is somewhat implementation-oriented but still brief and not excessively verbose.

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?

With 9 parameters at 0% schema coverage, the description omits nearly all parameter semantics, leaving an agent unable to know what top, days, source, or query_filter control. An output schema exists, so return values need not be explained, but the input side is substantially incomplete for a moderately complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 9 parameters, and the description does not mention any parameter names, meanings, formats, or defaults. For a tool with top, days, source, dates, max_rows, search_type, query_filter, and site_url, the description provides no compensating semantic detail.

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 the tool's output as 'most demanded words across all queries,' which is a clear resource and scope, and the name top_terms reinforces it. It distinguishes itself from generic search analytics tools by noting language support for Chinese/Japanese/Thai, but it does not explicitly state a verb like 'extract' or 'list' or name a sibling alternative.

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 gives no explicit guidance on when to use top_terms versus siblings like query_search_analytics or query_variants. The language-support notes imply it is useful for non-space-delimited languages, but that is not framed as a usage condition or alternative selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 37 tool updatesv0.2.0
    • First observedadd_property
    • First observedbrand_split
    • First observedbuild_query_regex
    • First observedcompare_periods
    • First observedcontent_movers
    • First observeddata_freshness
    • First observeddelete_sitemap
    • First observedfind_cannibalization
    • First observedget_capabilities
    • First observedget_property
    • First observedget_sitemap
    • First observedhistory_compare
    • First observedhistory_query
    • First observedhistory_sql
    • First observedhistory_status
    • First observedhistory_trend
    • First observedhourly_performance
    • First observedindexing_summary
    • First observedinspect_url
    • First observedinspect_urls
    • First observedinspection_quota
    • First observedkeyboard_mistypes
    • First observedlanguage_breakdown
    • First observedlist_properties
    • First observedlist_sitemaps
    • First observedlow_ctr_opportunities
    • First observedpages_for_query
    • First observedperformance_overview
    • First observedqueries_for_page
    • First observedquery_search_analytics
    • First observedquery_variants
    • First observedreauthenticate
    • First observedremove_property
    • First observedstriking_distance
    • First observedsubmit_sitemap
    • First observedsync_history
    • First observedtop_terms

TDQS

B3.3/5.0

Scored across 37 tools

Disambiguation4/5

Most tools target distinct Search Console resources or analytics views, with clear boundaries such as single vs. batch URL inspection and API vs. local history. A few boundaries blur around the general-purpose query_search_analytics tool versus specialized analytics tools like performance_overview, compare_periods, and history_query, but the descriptions help disambiguate.

Naming Consistency4/5

All tool names use snake_case consistently, with no camelCase or mixed styles. Many names are noun/report phrases rather than strict verb_noun patterns, but prefixes like history_, inspect_url(s), and sitemap_ are used predictably.

Tool Count2/5

37 tools is well above a practical scoped set and risks overwhelming an agent, even for a feature-rich domain like Search Console. Many specialized analytics and history tools could be consolidated or surfaced as optional modes rather than separate top-level tools.

Completeness5/5

The surface covers properties, sitemaps, URL inspection, search analytics, advanced query/page analytics, variant handling, local history sync/query, and operational checks like capabilities and quota. No obvious lifecycle or CRUD gaps exist for the stated Google Search Console purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    MCP server providing 32 tools for Google Search Console and Google Analytics 4, enabling search analytics, URL inspection, indexing, and cross-platform analysis via natural language.
    43
    11
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables natural-language, read-only analysis of your own Google Search Console and Google Analytics 4 data, including search performance, engagement, sitemap health, ranking opportunities, and deterministic SEO audits through MCP clients like ChatGPT.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables SEO teams to query GA4 and Search Console data in plain language through a read-only MCP connector, with a client registry and automatic property discovery.
    68 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables natural-language querying of Google Search Console data, including search analytics, site properties, URL inspection, and sitemap status, through MCP-compatible clients like ChatGPT and Claude.
    MIT