Skip to main content
Glama
search-console-mcp

search-console-mcp

by makashibk

search-console-mcp

A read-only Google Search Console MCP server for Claude, built for SEO work on real e-commerce sites.

search-console-mcp connects Claude Desktop to Google Search Console and gives it 44 tools: performance analysis, a rebuilt Page indexing report, robots.txt monitoring, redirect and HTTPS checks, Core Web Vitals, and Crawl stats from your own server logs. It runs entirely on your machine, talks only to Google's official APIs and the sites you check (plus a public DNS resolver for check_dns), and cannot change anything in Search Console.

Built and maintained by MakashibK.

Example (illustrative numbers):

You:     Which pages lost traffic on example.com this month, and why?

Claude:  14 pages lost 1,862 clicks (1-28 Sep vs 4-31 Aug, complete days only).
         /women/dresses/        -412 clicks  ranking_loss  avg position 3.1 -> 7.4
         /sale/                 -390 clicks  ctr_drop      position 2.0 -> 2.1, CTR 18.2% -> 9.6%
         /blog/linen-care/      -244 clicks  demand_drop   impressions -48%, position stable
         ...

Quick start

  1. Create a Google OAuth client and sign in with the read-only scope (steps 1 and 2).

  2. Install the server:

    pipx install git+https://github.com/MakashibK/search-console-mcp.git
  3. Add it to Claude Desktop under the name search-console-mcp (step 4).

  4. Quit and reopen Claude Desktop. Settings → Developer shows search-console-mcp as Running.

  5. In a new chat, ask: Use search-console-mcp: call server_status, then list_properties.

Want it gone again? See Uninstall.


Related MCP server: gsc-ga4-mcp

Contents


Why another Search Console MCP server

Most Search Console MCP servers wrap the same four API endpoints and stop there. This one was built for agency work on Magento and other e-commerce sites, where the questions are rarely "what were my top queries" and usually "why did this category lose traffic", "which of these 40,000 URLs aren't indexed and why", or "is Googlebot wasting crawl budget on filter URLs".

What's different:

  • Strictly read-only. It asks Google for the webmasters.readonly scope only, has no write tools, and blocks any non-read request in code. See Read-only by design.

  • Accurate comparisons. Period comparisons stop at the last complete day reported by Google, so fresh, still-processing data doesn't make the recent period look worse than it is.

  • Traceable numbers. Every performance result carries a _source block (property, dates, filters, data state), and verify_metric re-queries Google to confirm a number before you put it in a client report.

  • Page indexing and Crawl stats, rebuilt. Google has no API for either report. search-console-mcp rebuilds the first from URL Inspection results stored locally, and the second from your web server's access logs.

  • Local only. No hosted service, no third-party server between you and Google, no telemetry. Credentials and data stay on your machine. The one outside call is check_dns, which looks DNS records up over DNS-over-HTTPS at dns.google (falling back to cloudflare-dns.com), so that resolver sees the domain you ask about.

  • Current MCP SDK. Built on the MCP Python SDK 2.3.


What it can do

44 tools, grouped from basic to advanced. You don't call them by name; you ask Claude in plain language and it picks the right tool. Every tool with its parameters, types and defaults is in the tool reference.

Properties and performance

Tool

What it does

server_status

Version, read-only mode, credentials file, local database, queues, background jobs, today's inspection quota

list_properties

Every property the signed-in account can access, with permission level

property_overview

Web and Discover performance vs the previous period, sitemap health, local indexing summary, robots.txt status

performance_overview

Totals vs the previous period, daily trend, top queries and pages. Works for web, image, video, news, Discover and Google News

performance_query

Any combination of date, hour, query, page, country, device, searchAppearance, with filters. Up to 16 months and 100,000 rows, with CSV export

compare_periods

Winners and losers between two periods, plus new and lost queries or pages

section_performance

Performance per folder (/blog/, /women/dresses/) or custom prefixes, with share of clicks and change. Domain properties are split per host

query_segments

Branded vs non-branded, question queries (English, Dutch, Swedish, Portuguese, French, German), query length, results page

multi_site_dashboard

Every property in one table, flagged as dropping, growing or stable

verify_metric

Re-queries Google to confirm a specific number

list_sitemaps, get_sitemap

Submitted sitemaps with errors, warnings, last download and pending status

property_notes

Context saved with a property: brand terms, migration dates, decisions

Analysis

Tool

What it does

traffic_drops

Pages or queries that lost clicks, each diagnosed as ranking_loss, ctr_drop, demand_drop or disappeared, with the loss split exactly into fewer impressions vs lower CTR, and the queries that lost the most

content_decay

Pages whose clicks fell in every one of N consecutive periods (default: three 30-day periods)

check_alerts

Severity-rated alerts: site-wide drop, queries falling off page one, CTR collapses at the same position, page click losses, pages that vanished

find_opportunities

Striking-distance keywords, low CTR at top positions, and content gaps (impressions but ranking below 20). Web or image search

find_cannibalization

Queries where several of your URLs split impressions. URL variants (www/non-www, http/https, trailing slash, parameters, case) are reported separately from genuinely competing pages

weekly_report

All of the above in one Markdown report saved to disk

Page indexing

Tool

What it does

queue_from_sitemaps

Downloads every submitted sitemap (including indexes and .gz) and queues each URL, remembering which sitemap it came from

queue_from_performance

Queues every page that had impressions

queue_urls

Queues your own list of URLs

run_inspections

Inspects the queue, a specific list, or your top pages by clicks. Can also report whether Google recrawled each URL after a given time

inspection_job

Background inspection within the daily quota while Claude Desktop is open; resumes after restarts

indexing_report

Indexed vs not indexed, every coverage reason with its source (Website / Google systems), sample URLs, what to check and how to fix, canonical conflicts, fetch and robots states, crawl age, rich-result issues. Filter by sitemap or URL pattern

list_inspected_urls

URL-level drill-down with filters (reason, rich result type, crawl age), sorting, paging, CSV export, and optional clicks per URL

indexing_changes

URLs whose coverage reason changed between inspections: dropped out of the index, newly indexed

indexing_fix_guide

What each Page indexing reason means, what to check and how to fix it

inspect_url

Google's view of one URL

diagnose_url

Google's view next to a live fetch: redirect chain, status, noindex (meta and header), canonicals, the robots.txt rule that applies, thin content

Technical checks

Tool

What it does

robots_txt_check

Fetches robots.txt like Googlebot: status and Google's interpretation of it, size vs the 500 KiB limit, groups, Googlebot rules, sitemaps, syntax warnings, diff vs the last check

robots_txt_check_property

Checks robots.txt on every host that had search traffic (every subdomain of a Domain property)

robots_txt_test

Is a URL allowed for a given crawler? Returns the deciding rule and line number

robots_txt_history, robots_txt_diff

Every stored check, each distinct version, and diffs between versions

robots_txt_watch

Re-checks robots.txt in the background to build a version history

check_redirects

Bulk redirect tracing (up to 500 URLs): chains, loops, temporary redirects, https→http. Validates migration maps (old → expected new)

check_https

Certificate validity, expiry and names, http→https redirect, HSTS, mixed content

check_dns

A, AAAA, CNAME, MX, NS, TXT and CAA records, plus Google site-verification tokens in DNS and on the home page

image_audit

Alt text, file names, width/height, lazy loading near the top, formats, file size, broken images, og:image and structured-data images

pagespeed_audit

PageSpeed Insights: Lighthouse scores, lab metrics, top opportunities by savings, failing SEO audits, real-user field data

core_web_vitals

LCP, INP, CLS, FCP and TTFB at p75 from the Chrome UX Report (the data behind Search Console's Core Web Vitals report), latest or weekly history

Crawl stats

Tool

What it does

import_access_logs

Imports Apache, Nginx or Varnish access logs (plain or .gz) in the background and verifies Googlebot against Google's published IP ranges

crawl_stats

Requests, download size and response time per day; breakdowns by response, file type, Googlebot type, purpose and host; robots.txt fetches; example and most-crawled URLs; fake Googlebots counted separately


What Google's API can't do

The Search Console API has four parts: Search Analytics, Sitemaps, Sites and URL Inspection. Everything else in the Search Console interface has no API, so no MCP server can offer it directly.

Search Console report

Status in search-console-mcp

Performance, Discover, Google News

Full API access

URL Inspection

Full API access, 2,000 URLs per property per day

Sitemaps

Read only (by choice)

Page indexing

Rebuilt from stored URL Inspection results

Crawl stats, Host status

Rebuilt from your server logs (Google-side DNS and connection failures can't be seen in logs)

Core Web Vitals

Chrome UX Report API, same field data

HTTPS

Checked directly with check_https

Shopping and Enhancements (Product snippets, Merchant listings, Breadcrumbs, Review snippets...)

Per URL, from URL Inspection rich results; no site-wide totals

robots.txt report

Own fetch and version history; Google's own fetch history isn't available

Video indexing, Links, Removals, Manual actions, Security issues, Achievements, Settings

Not available through any API

Request indexing

Not available. Google's Indexing API is limited to job-posting and livestream pages, so it is deliberately not included


How the numbers are calculated

Complete days only. When you request recent data, Google marks where still-processing data starts (metadata.firstIncompleteDate). Comparison tools end on the day before that, and say so in end_basis. If you pass explicit dates, they're used as given.

Traffic drop diagnosis. Clicks = impressions × CTR, so any click change splits exactly into two parts:

Δclicks = (I₁ − I₀) × CTR₀   +   I₁ × (CTR₁ − CTR₀)
          fewer impressions      lower CTR

Each drop is labelled ranking_loss (average position worsened by ≥ 2, configurable), ctr_drop (CTR part dominates at a stable position), demand_drop (impressions part dominates at a stable position) or disappeared (no impressions at all). The diagnosis is based on Search Console data only; it doesn't see the search results page itself.

CTR benchmarks. "Low CTR" compares each query/page pair with the median CTR of your own site at the same rounded position. There is no generic industry CTR curve.

Aggregated positions (sections, segments) are impression-weighted averages of row positions, close to but not identical with the interface's figure.

Anonymised queries. Query-level rows exclude queries Google anonymises. Overviews report what share of clicks comes from visible queries.

Cannibalisation. URLs are normalised (host without www., lowercase path, no trailing slash, no parameters). When the competing URLs are really the same page, the query is listed under url_variant_splits with the reason (www vs non-www, http vs https, trailing slash, query parameters, letter case). Those need a redirect or canonical fix, not content changes.

Dates and time zone. All dates are Pacific Time, as in Search Console. The URL Inspection daily quota is counted per Pacific-Time day.


Read-only by design

search-console-mcp is read-only at three independent levels:

  1. Google scope. The server only requests https://www.googleapis.com/auth/webmasters.readonly. A token with this scope cannot submit, delete or change anything in Search Console, whatever the code does.

  2. No write tools. There is no tool to submit or delete sitemaps, or to add or remove properties.

  3. Request guard. Every Search Console request is checked before it leaves your machine. Only GET and the two read-only POST endpoints (Search Analytics query, URL Inspection) are allowed; anything else raises WriteBlocked. A test verifies that blocked requests never reach Google, and another that no other module can bypass the guard.

Website checks (robots.txt, sitemaps, redirects, HTTPS, images) send GET or HEAD requests only. The Chrome UX Report API is queried with POST, which is how that API reads data.

The only things search-console-mcp writes are local files: its SQLite database, its log file, and CSV or report exports when you ask for them. A few tools that save results this way (for example inspect_url, which stores each inspection locally, and weekly_report, which writes a Markdown file) are marked as non-read-only in their MCP metadata, which some clients display as "write" tools. They only write to your own computer, never to Search Console.


Requirements

  • Claude Desktop (Windows or macOS). Local MCP servers don't work in Claude on the web.

  • Python 3.11 or newer, and pipx

  • Google Cloud CLI (gcloud)

  • A Google Cloud project with the Google Search Console API enabled

  • A Google account with access to the Search Console properties you want to analyse

Runs on Windows 10 with Python 3.13 and Claude Desktop. The test suite runs on Linux with Python 3.12; macOS should work the same way but hasn't been tried yet.


Installation

1. Create an OAuth client

In Google Cloud Console:

  1. Create or pick a project and enable the Google Search Console API.

  2. Go to Google Auth Platform and configure the consent screen: app name, support email, audience External.

  3. Under Audience → Test users, add every Google account you will sign in with. While the app is in Testing, Google only lets listed test users sign in; without this, sign-in stops with "Access blocked".

  4. Under Clients → Create client, choose Desktop app, then Download JSON. Save it as client_secret.json.

On Windows, check the file isn't saved as client_secret.json.json; Windows hides file extensions by default. Keep client_secret.json private: see Keep these private.

2. Sign in with gcloud

gcloud auth application-default login --scopes=https://www.googleapis.com/auth/webmasters.readonly,https://www.googleapis.com/auth/cloud-platform --client-id-file=PATH\TO\client_secret.json

Sign in, tick every permission checkbox, and note the path printed after Credentials saved to file:.

If you also use Google's Ads or Analytics MCP servers, sign in once with all their scopes in the same command; they all share this credentials file.

3. Install the server

pipx install git+https://github.com/MakashibK/search-console-mcp.git

Or from a clone:

git clone https://github.com/MakashibK/search-console-mcp.git
cd search-console-mcp
pipx install .

On Windows, if pipx isn't recognised, use py -m pipx instead. Then find the installed program:

where search-console-mcp        # Windows
which search-console-mcp        # macOS

If the command isn't found, run pipx ensurepath and open a new terminal. The default locations are the ones used in the next step.

4. Add it to Claude Desktop

Open Settings → Developer → Edit Config. This opens claude_desktop_config.json, which lives at %APPDATA%\Claude\claude_desktop_config.json on Windows and ~/Library/Application Support/Claude/claude_desktop_config.json on macOS. Add the server under mcpServers and keep any existing content in the file.

The key is the name Claude shows. Use exactly search-console-mcp: that is the name you will see under Settings → Developer and under + → Connectors.

Replace every <you> with your real Windows or macOS username before saving. A placeholder left in the path makes Claude Desktop fail to start the server (spawn ... ENOENT in its log). On Windows, double every backslash, as in the example.

Keep the entry inside mcpServers. If other servers are already listed, add a comma after the previous server's closing }. An entry placed outside mcpServers is silently ignored. Claude Desktop keeps its own preferences in this file too, so leave everything else as it is.

Windows:

{
  "mcpServers": {
    "search-console-mcp": {
      "command": "C:\\Users\\<you>\\.local\\bin\\search-console-mcp.exe",
      "args": [],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "C:\\Users\\<you>\\AppData\\Roaming\\gcloud\\application_default_credentials.json"
      }
    }
  }
}

macOS:

{
  "mcpServers": {
    "search-console-mcp": {
      "command": "/Users/<you>/.local/bin/search-console-mcp",
      "args": [],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "/Users/<you>/.config/gcloud/application_default_credentials.json"
      }
    }
  }
}

Fully quit Claude Desktop (tray or menu bar → Quit, not just closing the window) and reopen it. Settings → Developer should show search-console-mcp as Running.

5. Check it works

In a new Claude Desktop chat:

Use search-console-mcp: call server_status, then list_properties.

server_status should report "mode": "read-only ...", and list_properties should list your properties.

Updating

Quit Claude Desktop first (Windows locks files that are in use), then:

pipx install --force git+https://github.com/MakashibK/search-console-mcp.git

If you installed from a clone, run git pull and then pipx install --force . in the cloned folder. Your database and notes are stored separately and survive updates and reinstalls.


Keep these private

These hold live access to your Google account or your data. Never share them, post them in an issue, or commit them to Git (the repository's .gitignore already skips the first three):

File or folder

Why

client_secret.json

Your OAuth client

application_default_credentials.json (the file GOOGLE_APPLICATION_CREDENTIALS points to)

Your signed-in Google login

A service-account JSON key, if you use one

Full access as that service account

claude_desktop_config.json, as it is

May contain API keys (CRUX_API_KEY, PAGESPEED_API_KEY) and the settings of your other servers. Share only the search-console-mcp block, with keys removed

The data folder (SEARCH_CONSOLE_MCP_DATA_DIR)

Your inspection history, notes and crawl statistics

If a credentials file was shared by mistake, run gcloud auth application-default revoke (see Uninstall) and sign in again. For a leaked service-account key or API key, delete it in Google Cloud Console and create a new one.


Uninstall

Each step is independent: do only what you need.

1. Remove it from Claude Desktop

  1. Quit Claude Desktop from the tray or menu bar (Quit). On Windows, check in Task Manager that no Claude process is left. Then reopen it and open Settings → Developer → Edit Config.

  2. Delete the whole "search-console-mcp": { ... } block from mcpServers. Keep the JSON valid: if the block was the last one, also remove the comma after the entry before it.

  3. Save the file, fully quit Claude Desktop (tray or menu bar → Quit) and reopen it.

search-console-mcp then disappears from Settings → Developer and from + → Connectors. To pause it without removing anything, switch it off under + → Connectors instead.

Do the steps in this order: step 1 removes the server from Claude, and the later steps clean up what it left behind.

2. Uninstall the program

Quit Claude Desktop first (Windows locks files that are in use), then:

pipx uninstall search-console-mcp

If you installed from a clone, you can also delete the cloned folder.

3. Delete the local data (optional)

search-console-mcp keeps its data on your computer only. Deleting these folders removes your inspection history, queued URLs, robots.txt version history, property notes and imported crawl statistics. It can't be undone.

What

Windows

macOS

Database, log file, cached Google IP ranges

%LOCALAPPDATA%\search-console-mcp

~/.local/share/search-console-mcp

CSV exports and saved reports

%USERPROFILE%\Documents\search-console-mcp-exports

~/Documents/search-console-mcp-exports

If you set SEARCH_CONSOLE_MCP_DATA_DIR or SEARCH_CONSOLE_MCP_EXPORT_DIR, delete those folders instead.

4. Revoke Google access (optional)

gcloud auth application-default revoke

This revokes the credentials created by gcloud auth application-default login and deletes the local credentials file. Other tools that share that file, such as Google's Ads or Analytics MCP servers, are signed out too, so sign in again for them afterwards. It doesn't touch a credentials file you pointed GOOGLE_APPLICATION_CREDENTIALS at yourself (for example a service-account key): delete that file, and remove the service account's email from your Search Console properties.

You can also remove the app on Google's side: open https://myaccount.google.com/permissions and remove the OAuth app you created in step 1. Don't do this if your other Google tools (Analytics, Ads, other MCP servers) use the same OAuth app: it cuts them off too. In that case just run the revoke command above and, if you like, remove the extra test users under Google Auth Platform → Audience.

5. Remove the Google Cloud setup (optional)

In Google Cloud Console: under APIs & Services → Credentials, delete the OAuth client; under APIs & Services → Library → Google Search Console API, click Disable API; or delete the whole project if you created it only for this. Then delete the downloaded client_secret.json from your computer (unless other Google tools still use it), and any API keys you created for CRUX_API_KEY or PAGESPEED_API_KEY. Python, pipx and the Google Cloud CLI can stay: other tools use them too.

6. Check it's gone

Reopen Claude Desktop: Settings → Developer no longer lists search-console-mcp. In a terminal, where search-console-mcp (Windows) should say it can't find the file, and which search-console-mcp (macOS) should print nothing. The data folder from step 3 should no longer exist.


Configuration

All settings are environment variables in the server's env block.

Variable

Default

Purpose

GOOGLE_APPLICATION_CREDENTIALS

gcloud's default credentials path

OAuth user credentials or a service-account key

SEARCH_CONSOLE_MCP_DATA_DIR

%LOCALAPPDATA%\search-console-mcp (Windows), ~/.local/share/search-console-mcp (macOS/Linux)

Database and log file

SEARCH_CONSOLE_MCP_EXPORT_DIR

~/Documents/search-console-mcp-exports

CSV exports and saved reports

SEARCH_CONSOLE_MCP_INSPECT_DAILY_LIMIT

2000

Cap on URL inspections per property per day

SEARCH_CONSOLE_MCP_QUOTA_PROJECT

(none)

Bill API quota to a specific Cloud project

CRUX_API_KEY

(none)

Enables core_web_vitals (Chrome UX Report API)

PAGESPEED_API_KEY

(none)

API key for pagespeed_audit; falls back to CRUX_API_KEY. Works without a key, but Google allows very few keyless requests

CRUX_API_KEY and PAGESPEED_API_KEY are ordinary Google API keys from a Cloud project that has the Chrome UX Report API (and, for PageSpeed, the PageSpeed Insights API) enabled. Example env block:

"env": {
  "GOOGLE_APPLICATION_CREDENTIALS": "C:\\Users\\<you>\\AppData\\Roaming\\gcloud\\application_default_credentials.json",
  "CRUX_API_KEY": "<your API key>"
}

Service accounts. Point GOOGLE_APPLICATION_CREDENTIALS at a service-account JSON key and add the service account's email as a user on each Search Console property. The credential loader supports this; day-to-day use so far has been with OAuth user credentials.

Login expiry. While the OAuth app is in Testing status, Google expires the login after 7 days. Re-run the gcloud auth application-default login command; the server reloads the credentials file automatically, with no restart needed.


Usage

Ask in plain language. Some examples:

Overview of example.com for the last 28 days.
Which pages lost traffic this month, and why? Show the queries behind the three biggest drops.
Quick wins for example.com: striking-distance keywords with at least 500 impressions.
Check for keyword cannibalisation over the last 90 days.
Branded vs non-branded clicks for example.com. Brand terms: Example, Exmple.
Daily clicks for /blog/ pages on mobile in the Netherlands, last 6 months, as a chart.
Image search quick wins for example.com.
Which pages have declined three months in a row?
Run check_alerts for all my properties.
Do these old URLs redirect to their new URLs? [paste the migration map]
Is /women?color=red allowed for Googlebot on www.example.com?
HTTPS and DNS check for example.com.
Write a weekly report for example.com.
Verify that the homepage got 1,240 clicks between 2026-09-01 and 2026-09-28.

search-console-mcp works alongside other MCP servers in the same chat, for example Google's Analytics and Ads servers:

Compare Search Console clicks with GA4 sessions and conversions for our top 20 landing pages.
Which queries do we rank top 3 for organically but still pay for in Google Ads?

Page indexing workflow

The Page indexing report has no API, but URL Inspection returns the same coverage reasons ("Crawled - currently not indexed", "Excluded by 'noindex' tag" and so on). search-console-mcp inspects URLs, stores every result, and builds the report from the latest result per URL.

  1. Fill the queue. queue_from_sitemaps for everything in your sitemaps, queue_from_performance for pages Google shows, or queue_urls for a specific list.

  2. Inspect. run_inspections for a batch now (default 100 URLs, 45-second budget; call again to continue), or inspection_job action=start to work through the whole queue in the background.

  3. Analyse. indexing_report for the overview (optionally for one sitemap or URL pattern), list_inspected_urls for URL lists and CSV exports, diagnose_url for a single page, indexing_changes to see what moved.

Re-inspections build a history, so you can see pages drop out of the index over time, something Search Console itself doesn't show per URL.

With Google's quota of 2,000 inspections per property per day, a 50,000-URL store takes about 25 days to cover fully. Start the background job early.


Crawl stats from server logs

  1. Copy access logs from the server to your machine (plain or .gz; rotated files are fine).

  2. Import them:

    Import C:\logs\access.log* for www.example.com.

    Imports run in the background, and files already imported are skipped. Ask "show import progress" to check.

  3. Analyse:

    Crawl stats for www.example.com for October: by response, file type and Googlebot type.
    Which 404 URLs does Googlebot request most?

Supported formats: Apache, Nginx and Varnish "combined" logs, optionally with a leading virtual-host field and a trailing response-time field. Decimal seconds (nginx $request_time) are read automatically; Apache %D needs response_time_unit="microseconds".

Every hit claiming to be Google is checked against Google's published crawler IP ranges, falling back to reverse and forward DNS. Hits with a Google user agent from a non-Google IP are counted as fake and excluded by default. If most hits fail verification, the log is probably recording a proxy or CDN IP (Varnish, Cloudflare, a load balancer) instead of the client IP; fix the real-IP setting or import with verify=false.

"Purpose" is approximate: Discovery means the URL appears for the first time in your imported logs, otherwise it's Refresh.


Quotas and limits

Limit

Value

URL Inspection (Google)

2,000 per property per day, 600 per minute. The server paces itself at 8 per second and stops cleanly at the quota

Search Analytics rows per request (Google)

25,000; the server pages automatically, up to 100,000 rows per call

Search Analytics history (Google)

About 16 months

Response cache

Identical Search Analytics requests are served from memory for 10 minutes

Rate-limit handling

Search Analytics: up to 4 retries with back-off on HTTP 429. URL Inspection: stops cleanly at the quota and resumes the next Pacific-Time day

run_inspections

Up to 500 URLs and 240 seconds per call (defaults 100 and 45)

check_redirects

Up to 500 URLs per call

Very large sites may hit Google's own row limits in Search Analytics. For complete, unsampled data at that scale, Search Console's BigQuery bulk export is the better source.


Where data is stored

What

Where

Database (inspections, URL queue, jobs, robots.txt history, notes, crawl statistics)

SEARCH_CONSOLE_MCP_DATA_DIR/gsc.sqlite3

Log file (rotated: 1 MB each, 3 backups)

SEARCH_CONSOLE_MCP_DATA_DIR/server.log

Cached Google crawler IP ranges

SEARCH_CONSOLE_MCP_DATA_DIR/google-crawler-ranges.json

CSV exports and reports

SEARCH_CONSOLE_MCP_EXPORT_DIR

Google credentials

Wherever GOOGLE_APPLICATION_CREDENTIALS points; never copied

Server logs you import stay where they are. Only aggregated counts and crawled URLs are stored in the database.


Troubleshooting

Symptom

Cause and fix

search-console-mcp doesn't appear under Settings → Developer

The JSON in claude_desktop_config.json is invalid (a missing comma, or backslashes in a Windows path that aren't doubled), or Claude Desktop wasn't fully quit. Fix the JSON, then quit from the tray or menu bar and reopen

Claude Desktop's log shows spawn ... ENOENT

The path in command is wrong, usually a <you> placeholder left in it. Put your real username in the path, or paste the exact output of where / which search-console-mcp (backslashes doubled on Windows)

The server is in the config but never appears

The entry sits outside mcpServers (for example after its closing }) and is silently ignored. Move it inside, with a comma after the previous server

"Access blocked" in the browser when signing in

That Google account isn't a test user of the OAuth app. Add it under Google Auth Platform → Audience → Test users, then sign in again

Claude says the tools aren't available

The chat isn't loading local servers. Use a new chat in the Claude Desktop app (not the browser) and check + → Connectors that search-console-mcp is on

Server shows Failed, log has notifications/cancelled

The server took longer than about 60 seconds to start. The first start after installing can be slow on Windows while Defender scans the new files; restart Claude Desktop. If it keeps happening, add a Defender exclusion for the pipx folder

Credentials file not found

Run the gcloud auth application-default login command, or fix the path in GOOGLE_APPLICATION_CREDENTIALS

Google login expired or was revoked / invalid_grant

The login expired (7 days in Testing mode) or was removed. Run the login command again; no restart needed

Not all requested scopes were granted / insufficient authentication scopes

The login doesn't include webmasters.readonly. Run the login command with that scope and tick every checkbox

Google Search Console API has not been used in project ...

Enable the API in the Cloud project that owns your OAuth client

User does not have sufficient permission for site

The signed-in account has no access to that property, or the property string is wrong. Use the exact value from list_properties (sc-domain:example.com vs https://www.example.com/)

Google quota hit (429) during inspections

Daily inspection quota used up. It resets at midnight Pacific Time; background jobs resume by themselves

pipx: Neither 'setup.py' nor 'pyproject.toml' found

You pointed pipx at the wrong folder level. Use the folder that contains pyproject.toml

pipx (Windows): FileExistsError ... \pipx

An empty file named pipx blocks pipx's folder. Rename it (ren %USERPROFILE%\pipx pipx-old-file) and run the command again

pipx: PermissionError: [WinError 32]

Claude Desktop is still running the server. Quit it fully, then reinstall

Crawl stats: most Google hits marked "not google ip"

The log records a proxy/CDN IP. See Crawl stats from server logs

The server writes errors to server.log in the data folder. Claude Desktop's Settings → Developer → View logs shows startup and protocol messages.


Development

git clone https://github.com/MakashibK/search-console-mcp.git
cd search-console-mcp
pip install -e . pytest
python -m pytest -q tests

The tests use a fake Search Console API, a local web server, synthetic server logs and a self-signed TLS server, so they need no Google account or network access to Google. (The TLS test needs openssl on your PATH and is skipped without it.) They cover the robots.txt matching rules (including Google's documented precedence examples), the read-only guard, pagination, the drop decomposition, decay, alerts, sections, segments, the indexing pipeline and quotas, site checks and log parsing.

Two tests keep the documentation honest: one checks that the tools in the README tables are exactly the tools the server registers, the other that docs/tools.md is up to date. After adding or changing a tool, regenerate the reference:

python scripts/gen_tools_doc.py

Project layout:

search_console_mcp/
  server.py         MCP tool definitions
  api.py            Search Console API client, read-only guard, cache, retries
  auth.py           Credentials loading and per-thread sessions
  performance.py    Search Analytics queries and analyses
  inspector.py      URL Inspection runner, quotas, background jobs
  indexing.py       Page indexing reports from stored inspections
  playbook.py       Coverage reasons: source, meaning, checks, fixes
  robots.py         robots.txt fetching, Google-style matching, history
  livecheck.py      Live page fetch for diagnose_url
  sitechecks.py     Redirects, HTTPS/TLS, DNS, images, PageSpeed
  crux.py           Chrome UX Report (Core Web Vitals)
  crawllogs.py      Access-log import and crawl stats
  sitemap_fetch.py  Sitemap download and parsing
  report.py         Weekly Markdown report
  db.py, util.py    Storage and helpers
docs/tools.md       Generated reference of every tool and parameter
scripts/            gen_tools_doc.py
tests/              Offline test suite

Bug reports and feature requests: GitHub Issues.


Changelog

1.2.0

  • Read-only: the server requests webmasters.readonly only, the sitemap submit/delete tools are removed, and a request guard blocks every non-read call.

1.1.0

  • Period comparisons aligned to the last complete day; provenance (_source) on results; verify_metric.

  • New analyses: traffic_drops (with exact decomposition), content_decay, check_alerts, section_performance, query_segments, multi_site_dashboard, weekly_report.

  • find_opportunities adds content gaps and image search; find_cannibalization separates URL variants.

  • run_inspections can inspect top pages and check recrawls since a given time.

  • Site checks: check_redirects (with migration maps), check_https, check_dns, image_audit, pagespeed_audit.

  • property_notes; Crawl stats from server logs (import_access_logs, crawl_stats).

  • 10-minute response cache and back-off on rate limits.

1.0.0

  • Performance queries and analyses, sitemaps, URL Inspection with a local database, rebuilt Page indexing report, background inspection jobs, diagnose_url, robots.txt monitoring with history, Core Web Vitals via CrUX.


License

MIT. Copyright (c) 2026 MakashibK. See LICENSE.

Not affiliated with or endorsed by Google or Anthropic. Google Search Console, Chrome UX Report and PageSpeed Insights are trademarks of Google LLC. Claude is a trademark of Anthropic, PBC.

Available Tools

44 tools
check_alertsB
Read-only

Severity-rated alerts: site-wide click drop, query position drops (incl. falling off page one), CTR collapses at the same position, page click losses, pages that vanished.

NameRequiredDescriptionDefault
daysNoCompare the last N complete days with the N before
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
min_clicksNo
search_typeNoweb
ctr_drop_pctNo
position_dropNo
site_drop_pctNo
click_drop_pctNo
min_impressionsNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that results are severity-rated and lists the anomaly classes detected, which is useful context, but it says nothing about how severity is assigned, whether alerts are ranked or capped, or what the response looks like.

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 dense sentence with the most important framing (severity-rated alerts) front-loaded and no filler. It is a noun phrase rather than a complete statement, which slightly weakens readability but wastes nothing.

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 9-parameter tool with no output schema and low schema coverage, the description covers the detection surface but not the return shape, severity semantics, or the role of the comparison window and search type. It is adequate to decide to call it, but not to predict or interpret results.

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 only 22%, so the description must compensate. It partially does: the enumerated alert types map onto ctr_drop_pct, position_drop, click_drop_pct, and site_drop_pct, giving implicit meaning to those thresholds. However, days, search_type, min_clicks, and min_impressions remain unexplained in both places, leaving a real gap.

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

Purpose4/5

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

The description names a specific resource (severity-rated alerts) and enumerates the exact detection categories: site-wide click drop, query position drops including falling off page one, CTR collapses at the same position, page click losses, and vanished pages. This is far more specific than a tautology and lets an agent distinguish it from generic siblings like traffic_drops or content_decay, though it never states the verb or that it is a bundled diagnostic scan.

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 guidance, no exclusions, and no reference to alternatives. With siblings such as traffic_drops, content_decay, and find_opportunities in the same family, an agent gets no signal about when this bundled alert check is preferable to those narrower tools.

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

check_dnsC
Read-only

DNS records (A, AAAA, CNAME, MX, NS, TXT, CAA) plus Google site-verification tokens found in DNS TXT and on the home page.

NameRequiredDescriptionDefault
domainYesDomain or sc-domain property
include_wwwNo

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety and external-network behavior are covered structurally. The description usefully adds that verification tokens are also fetched from the home page (an HTTP fetch beyond pure DNS), but it omits what happens for an unregistered/invalid domain, whether failures are returned as errors or empty results, and how long the lookup takes.

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 tightly-packed sentence with no filler, and the highest-value information (which record types) comes first. It loses a point for being a sentence fragment with no verb, which slightly weakens front-loading of the actual action.

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 small two-parameter read-only tool with no output schema, enumerating the returned record types is genuinely the right content since nothing else describes the return shape. However, the undefined include_www parameter and the total absence of usage context leave real gaps for an agent deciding when and how to call it.

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 only 50% schema description coverage, the description must compensate and does not: it never explains that domain accepts an sc-domain property form, and include_www (default true) is completely unaddressed even though it likely controls the home-page fetch hinted at. The only implicit connection is 'on the home page', which does not explain the parameter's effect.

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 enumerates the exact data returned (A, AAAA, CNAME, MX, NS, TXT, CAA records plus Google verification tokens) but is a bare noun phrase with no verb, so it never explicitly says it looks these up for a domain. It is distinguishable from siblings like robots_txt_check and check_https, but only by the record-type list rather than by a stated action.

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 guidance at all: nothing says to call this when diagnosing DNS/verification problems, and nothing distinguishes it from check_https, check_redirects, or robots_txt_check, which an agent could plausibly pick for a related diagnostic task. The reader must infer the use case entirely.

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

check_httpsB
Read-only

HTTPS health (Search Console's HTTPS report has no API): certificate validity/expiry/names, http->https redirect, HSTS, mixed content.

NameRequiredDescriptionDefault
urlsNoOptional URLs to confirm they end on https (max 100)
host_or_urlYesHost or URL

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile and the fact that this reaches live network state are covered. The description adds the useful detail that the checks are HTTPS-specific (cert chain, redirect, HSTS, mixed content), but says nothing about latency, whether checks are live vs cached, or failure modes for unreachable hosts.

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 dense sentence with the resource and the checked facets front-loaded, and the parenthetical justification for the tool's existence is short and earns its place. The telegraphic fragment style reads slightly clipped, but there is no wasted wording.

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

Completeness4/5

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

For a read-only, two-parameter network check with no output schema, the description covers the substantive surface: it enumerates what is inspected, which effectively previews the result categories. The remaining gap, how results are shaped or whether a partial failure yields partial output, is minor.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (host_or_url and the optional urls array with its max-100 constraint) are already documented in the schema. The description adds no further meaning about the relationship between host_or_url and urls, so the baseline 3 applies.

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

Purpose4/5

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

The description names a specific verb+resource ('HTTPS health') and enumerates the exact facets checked: certificate validity/expiry/names, http->https redirect, HSTS, mixed content. That is far more specific than the bare name 'check_https'. It does not explicitly distinguish itself from the nearby check_redirects or check_dns siblings, which keeps 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?

There is no when-to-use or when-not-to-use guidance, and no alternative is named. The parenthetical ('Search Console's HTTPS report has no API') explains why the tool exists but does not tell the agent when to reach for it instead of check_redirects or server_status.

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

check_redirectsA
Read-only

Trace redirect chains in bulk: every hop, final status, chains, loops, temporary redirects, https->http; validates migration redirect maps.

NameRequiredDescriptionDefault
urlsNoURLs to trace (max 500)
pairsNoMigration map [{from, to}]: verifies each old URL ends at its new URL
concurrencyNo

TDQS

A3.7/5.0
Behavior4/5

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

With readOnlyHint=true and openWorldHint=true already declaring safety and network access, the description adds real behavioral context: it reports every hop, final status, loops, temporary redirects, and https->http downgrades. That tells the agent what observations will come back and what pathological cases are detected. It does not describe rate limits, error handling, or result format, which keeps it below a 5.

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 definition is a single, front-loaded sentence that packs the core purpose and expected findings without filler. The semicolon-separated list is dense but readable. Minor redundancy exists between "redirect chains" and the later "chains" item.

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?

There is no output schema, so the description must carry return-value meaning, and it does by enumerating hop tracing, final status, loops, temporary redirects, and https->http findings. It also covers both operating modes (urls and pairs). It stops short of explaining result structure or concurrency behavior, but for a read-only bulk checker it is largely complete.

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

Parameters3/5

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

Schema coverage is 67%, so the baseline is 3. The description adds meaning for urls ("in bulk") and pairs ("validates migration redirect maps"), clarifying that pairs verifies each old URL ends at its new URL. However, concurrency is completely undocumented in both schema and description, leaving a clear gap.

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

Purpose4/5

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

The description states a specific verb and resource: "Trace redirect chains in bulk." It then enumerates the exact findings (every hop, final status, loops, temporary redirects, https->http) and the migration-map validation mode. This makes the tool clearly about bulk redirect tracing rather than HTTPS or DNS checking, though it does not explicitly name sibling tools.

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?

"In bulk" implies this is the tool for many URLs rather than single-URL inspection, and "validates migration redirect maps" signals the pairs mode. However, there is no explicit when-not guidance, no named alternatives such as check_https or inspect_url, and no statement of prerequisites or limits beyond what the schema already provides.

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

compare_periodsB
Read-only

Winners and losers between two periods (default: previous equal-length period), with new and lost queries/pages.

NameRequiredDescriptionDefault
daysNoDays ending yesterday (PT); ignored if start_date is given
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
top_nNo
filtersNoSame format as performance_query filters
end_dateNoYYYY-MM-DD (Pacific Time)
dimensionNoWhat to comparequery
start_dateNoYYYY-MM-DD (Pacific Time)
search_typeNoSearch Console search type; 'discover' = Discover reportweb
previous_endNoYYYY-MM-DD (Pacific Time)
previous_startNoYYYY-MM-DD (Pacific Time)
min_impressionsNo

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered; the description adds the implicit default comparison window and the presence of new/lost entities in the result. It omits consequential behavior: that min_impressions (default 10) silently suppresses low-volume entities, how results are ranked/truncated by top_n, and that missing previous_start/previous_end triggers auto-derivation.

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 tight sentence with no filler, and the core behavior plus its default are front-loaded. It is arguably over-compressed for an 11-parameter 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.

Completeness2/5

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

For an 11-parameter comparison tool with no output schema, the description should say what is measured (clicks, impressions, CTR, position deltas), how rows are ordered and cut off, and how min_impressions affects candidate entities. None of that is present, leaving the agent unable to predict or interpret the response.

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 82%, so the baseline is 3 regardless of the description. The only parameter-level meaning added is the automatic previous-period derivation implied by the parenthetical; top_n and min_impressions remain undocumented in both places, and the description does not explain how dimension interacts with the "new and lost" framing.

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?

"Winners and losers between two periods" conveys a delta/comparison operation, and "with new and lost queries/pages" hints at the output content. But it never says which metrics are compared, and it does not distinguish itself from siblings that also measure change over time (traffic_drops, content_decay, performance_overview), so an agent must guess which tool to reach for.

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 "(default: previous equal-length period)" tells the agent what happens when no comparison window is supplied, which is real usage guidance. However there is no when-to-use/when-not-to-use statement and no pointer to the obvious alternatives (performance_query for a single period, traffic_drops for decline diagnosis).

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

content_decayB
Read-only

Pages (or queries) whose clicks fell in every one of N consecutive periods: slow decay, not a one-off dip.

NameRequiredDescriptionDefault
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
top_nNo
periodsNoConsecutive periods that must each decline
dimensionNopage
min_clicksNoClicks needed in the oldest period
period_daysNo
search_typeNoweb
min_decline_pctNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the meaningful behavioral rule that the decline must occur in every consecutive period, but says nothing about result ordering, which period is the baseline, or what happens when the threshold is not met.

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 sentence, front-loaded with the resource and the qualifying condition, with no wasted wording. It is compressed to the point of being slightly cryptic, but every clause earns its place.

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?

There is no output schema, so the description could explain what a result entry looks like, but it does define the core selection logic well enough to call the tool correctly. With eight parameters and low schema coverage, several knobs remain undocumented in both places.

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 only 38%, so the description needs to compensate, and it only partially does: 'N consecutive periods' maps to periods and 'clicks fell' loosely to min_decline_pct, and 'pages or queries' maps to dimension. It adds no meaning for top_n, min_clicks, period_days, search_type, or the accepted site formats.

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 the resource (pages, or queries) and the specific selection criterion (clicks fell in every one of N consecutive periods), and it distinguishes the concept from a one-off dip. An agent can tell this apart from generic drop-detection siblings such as traffic_drops, though it never names the 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?

The 'slow decay, not a one-off dip' framing implies when this tool is the right choice, but no alternative tool is named and no conditions or prerequisites are stated. Usage is inferable rather than directed.

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

core_web_vitalsA
Read-only

Core Web Vitals field data (LCP, INP, CLS, FCP, TTFB at p75) from the Chrome UX Report, the data behind Search Console's CWV report. Needs CRUX_API_KEY.

NameRequiredDescriptionDefault
targetYesOrigin (https://www.example.com) or full page URL
historyNoWeekly history instead of the latest 28-day window
form_factorNoDevice classPHONE

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external-network behavior are covered. The description adds one genuinely useful non-annotation fact — the CRUX_API_KEY credential requirement — but says nothing about low-traffic origins returning no data, rate limits, or latency, which are the real failure modes for a CrUX query.

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 dense sentences with zero filler: the resource and metric list come first, then the source and credential prerequisite. Nothing is repeated and nothing needs to be trimmed.

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 no output schema, the description usefully enumerates the returned metrics and their p75 aggregation, which is the minimum an agent needs. It stops short of describing the response shape (e.g. per-form-factor breakdown or URL-vs-origin granularity) and the empty-data case, but it is complete enough to call the tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, so 'target', 'history', and 'form_factor' are already fully documented, and the description's mention of the 'latest 28-day window' merely restates the history parameter's schema text. Its one addition is the 'p75' percentile framing, which clarifies that metrics are reported as percentiles rather than averages — useful but minor.

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 resource (Core Web Vitals / CrUX field data), the exact metrics returned (LCP, INP, CLS, FCP, TTFB at p75), and the upstream source (Chrome UX Report). The word 'field data' implicitly separates it from a lab-data sibling like performance_overview or a rendered-page audit, but no sibling is named, so differentiation is inferred 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?

It gives implied context — real-user field data behind Search Console's CWV report — which suggests when an agent should reach for it. However, it never says when to use an alternative (e.g. lab-based speed tooling for page-level diagnostics) or when this tool is inappropriate, so the agent must infer routing from the phrase 'field data'.

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

crawl_statsB
Read-only

Crawl stats from your logs: requests, download size, response time per day; breakdowns by response, file type, Googlebot type, purpose and host; robots.txt fetches; example URLs.

NameRequiredDescriptionDefault
hostNoHost, or omit/'all' for every imported host
end_dateNoYYYY-MM-DD (Pacific Time)
examplesNoExample URLs per response type
responseNoLimit top_urls to one response, e.g. 'Not found (404)'
top_urlsNoMost-crawled URLs
bot_typesNoe.g. ['Smartphone','Desktop','Image','AdsBot','StoreBot']
start_dateNoYYYY-MM-DD (Pacific Time)
verificationNoWhich hits count; fake = Google user agent from a non-Google IPexclude_fake

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful return-content context (daily series, breakdowns, robots.txt fetches, example URLs) which matters since there is no output schema, but it omits prerequisite state (logs must be imported), default date-range behavior, and result-size limits.

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 that leads with the core action and then enumerates outputs; no filler or redundant phrasing. The semicolon-delimited list is dense but readable, though it reads slightly like a feature dump rather than prioritized guidance.

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 an 8-parameter, zero-required analytics tool with no output schema, the description does the important work of enumerating what comes back. It still leaves out the dependency on prior log import and any guidance on date-range defaults or data volume, which an agent needs to call it sensibly.

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

Parameters3/5

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

Schema coverage is 100%, so every parameter is already documented, making 3 the baseline. The description loosely maps its breakdown list to parameters such as response, bot_types, and host, but adds no format or interaction detail (e.g., how response interacts with top_urls) beyond what the schema already provides.

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 and source: crawl statistics derived from imported access logs, with an enumerated list of metrics (requests, download size, response time) and breakdowns (response, file type, Googlebot type, purpose, host). An agent can distinguish it from siblings like performance_query or import_access_logs by the 'from your logs' framing, 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'from your logs' hints that access logs must already be imported, but the description never states that prerequisite or says when to prefer this over performance_query or import_access_logs. There are no exclusions or alternative-selection rules.

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

diagnose_urlA

Why is this URL (not) indexed? Combines Google's inspection with a live fetch: redirect chain, status, noindex, canonicals, robots.txt rule, thin content.

NameRequiredDescriptionDefault
urlYesFull page URL
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
user_agentNoUA for the live fetch. A Googlebot UA from your IP may be blocked by a WAFdefault
use_cached_inspectionNoUse the last stored inspection instead of a new one

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true, destructiveHint=false, so the agent knows this is an outward-facing operation with some side effect. The description adds real context by noting it combines Google's inspection API with a live fetch, which explains the non-read-only hint, but it does not say whether quota is consumed, whether results are cached, or what the interaction with use_cached_inspection means. Useful but incomplete 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.

Conciseness5/5

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

Two sentences, zero filler: the diagnostic question is front-loaded and the enumerated checks follow immediately. Every clause carries information an agent can use to decide whether to call it.

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 four-parameter diagnostic tool with no output schema, the description does the important work of telling the agent what signals come back (redirects, status, noindex, canonicals, robots rule, thin content), so the return value is not a mystery. What is missing is the cost/rate-limit dimension of running a fresh inspection versus a cached one.

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

Parameters3/5

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

Schema description coverage is 100% and the schema itself explains site formats, user_agent options, and the cached-inspection flag well. The description's reference to "a live fetch" and "Google's inspection" loosely maps to user_agent and use_cached_inspection but adds no format or defaulting detail beyond the schema. Baseline 3 applies.

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

Purpose4/5

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

Opens with a specific diagnostic question ("Why is this URL (not) indexed?") and enumerates the concrete checks it performs: redirect chain, status, noindex, canonicals, robots.txt rule, thin content. That verb-plus-resource framing clearly separates it from single-purpose siblings like robots_txt_check or check_redirects, since this one aggregates them. It stops short of naming a sibling explicitly, which is why it is a 4 rather than 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 "Why is this URL (not) indexed?" framing implies the use case: per-URL indexing diagnosis. But nothing states when to prefer this over inspect_url, check_redirects, or robots_txt_check, all of which appear in the sibling list and overlap with pieces of this tool. Usage is inferable rather than guided.

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

find_cannibalizationA
Read-only

Queries where 2+ of your URLs split impressions. URL variants (www/non-www, http/https, slash, parameters) are reported separately from genuinely competing pages.

NameRequiredDescriptionDefault
daysNoDays ending yesterday (PT); ignored if start_date is given
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
top_nNo
end_dateNoYYYY-MM-DD (Pacific Time)
min_shareNoEach competing page's minimum share of the query's impressions
start_dateNoYYYY-MM-DD (Pacific Time)
search_typeNoSearch typeweb
min_impressionsNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful behavioral trait — that www/non-www, http/https, slash and parameter variants are reported as separate findings rather than as competing pages — but says nothing about thresholds applied, result ordering, or what a finding contains.

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 the core purpose front-loaded and the output-disambiguation detail second. No filler, no restatement of the tool name, and nothing an agent must read past to get the point.

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?

With 8 parameters, no output schema, and only two annotations, the description leaves material gaps: it does not say what a returned finding looks like (query, URL list, impression shares), how results are ranked or capped by top_n, or when the data window ends. It is adequate to select the tool but thin for interpreting results.

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 75%, so most parameter meaning (site format, date windows, min_share, start_date precedence over days) is already documented in the schema. The description contributes no additional parameter semantics, and undocumented fields such as top_n and min_impressions receive no help here. Baseline 3 is appropriate given the schema already carries the load.

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?

Names a specific analytical operation on a specific resource: queries where 2+ URLs split impressions. The second sentence usefully disambiguates URL-variant duplication from real page competition, which is the key semantic distinction for this tool. It does not name a sibling (e.g. find_opportunities) to contrast against, 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 only implied: an agent can infer this is a cannibalization audit for a given property, but there is no explicit 'use this when X, not Y' guidance and no mention of prerequisites such as Search Console property access or data availability windows. The clarification about variants being reported separately hints at interpretation but not invocation.

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

find_opportunitiesB
Read-only

Quick wins: striking-distance query/page pairs, top positions with low CTR (vs this site's own CTR by position), and content gaps (demand, but ranking below 20).

NameRequiredDescriptionDefault
daysNoDays ending yesterday (PT); ignored if start_date is given
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
top_nNo
end_dateNoYYYY-MM-DD (Pacific Time)
start_dateNoYYYY-MM-DD (Pacific Time)
position_toNo
search_typeNo'image' = image-search quick winsweb
position_fromNo
min_impressionsNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavioral context by explaining that CTR is benchmarked against this site's own CTR-by-position curve rather than a global average, but it says nothing about the position band defaults that define 'striking distance' or how min_impressions/top_n shape results.

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 sentence with the actionable framing ('Quick wins') front-loaded and three parallel clauses that each carry information. No padding, though the parenthetical CTR clause is slightly dense relative to the rest.

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?

With nine parameters and no output schema, the description does useful work by defining the three result categories an agent will receive. It remains incomplete on how the position band, impression threshold, and top_n constrain each of those categories, and it never states that results are limited/scored.

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 56%, and notably position_from, position_to, and top_n carry no schema descriptions at all. The description partially compensates by tying 'ranking below 20' to the position ceiling and 'top positions' to the lower bound, giving the position band meaning, but it leaves min_impressions, top_n, and the interaction between days/start_date/end_date 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?

The description names the resource precisely by enumerating three concrete finding types (striking-distance query/page pairs, low-CTR top positions, content gaps ranking below 20), which tells an agent exactly what this tool returns. It is distinguishable from siblings like performance_query or content_decay by its 'opportunity' framing, though the verb itself is left to the tool name rather than stated in the description.

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?

'Quick wins' implies a use case (finding actionable improvement candidates) but the description never says when to pick this over performance_query, content_decay, or query_segments, nor any prerequisites such as needing Search Console data for the site. No exclusions or alternative routing are given.

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

get_sitemapB
Read-only

Details of one submitted sitemap.

NameRequiredDescriptionDefault
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
sitemap_urlYesFull sitemap URL

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the mild qualifying context that the sitemap must be a 'submitted' one; it says nothing about permission requirements on the property, rate limits, or error behavior for an unknown sitemap_url. With annotations carrying the safety burden, this is adequate but thin.

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 no wasted words, and the scope qualifier ('one submitted') is front-loaded. Its brevity shades into under-specification rather than verbosity, but as a structural matter it is clean and easy 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?

This is a simple two-parameter read tool with fully documented parameters and safety annotations, so little is required. However, with no output schema, the description never indicates what 'details' are returned (last download, errors, warnings, submitted URL count), leaving the agent to guess at the response shape.

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

Parameters3/5

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

Schema description coverage is 100%, with both 'site' (three accepted formats) and 'sitemap_url' (full URL) documented in the schema itself. The description adds no format, matching, or validation detail beyond that, so the baseline of 3 applies.

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

Purpose4/5

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

The description names the resource (a sitemap) and its scope ('one submitted'), which implicitly distinguishes it from the sibling list_sitemaps that returns many. The verb is weak ('Details of') rather than an explicit 'Get', and no sibling is named, so it is clear but not maximally differentiated.

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 singular 'one submitted sitemap' plus the required sitemap_url suggests calling this when you already know which sitemap you want, versus listing them first. There is no explicit when/when-not guidance, no mention of list_sitemaps as the alternative, and no note that the sitemap must already have been submitted to the property.

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

image_auditB
Read-only

Image SEO audit of pages: alt text, file names, width/height, lazy loading near the top, formats, file size, broken images, og:image and structured-data images.

NameRequiredDescriptionDefault
urlsYesPages to audit (max 10)
large_kbNo
max_imagesNo
check_filesNoFetch image headers for size/broken checks (up to 30 per page)

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds little beyond the schema: it does not disclose that pages are fetched live, how long a 10-page audit takes, or what happens when check_files triggers up to 30 header requests per page. The 30-per-page fetch detail lives in the schema, not the description.

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 dense sentence that front-loads the purpose and then lists checks in a compact comma-separated form. No filler or repetition, though the run-on enumeration makes it slightly harder to scan than a short lead sentence plus bullets.

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?

With no output schema, the description should clarify what an agent gets back (per-page findings? issue counts? severity?) and should cover the two undocumented tuning parameters. It defines the audit scope well but leaves output shape and threshold semantics unaddressed for a tool that takes four parameters.

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?

Only 'urls' and 'check_files' carry schema descriptions (50% coverage), leaving large_kb and max_images undocumented in both places. The description mentions 'file size' and 'broken images' but never explains that large_kb is a size threshold (default 300 KB) or that max_images caps images analyzed per page, so it does not 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?

The description names a specific verb and resource ('Image SEO audit of pages') and enumerates the concrete checks performed: alt text, file names, width/height, lazy loading, formats, file size, broken images, og:image, structured data. This is clearly distinguishable from siblings like pagespeed_audit or inspect_url. It stops short of explicitly naming the nearest sibling, so it does not reach 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 only implied by the enumerated checks – an agent can infer it is for image-level SEO review of a set of pages. There is no statement of when to prefer this over pagespeed_audit or inspect_url, and no mention of prerequisites or cost implications of auditing multiple URLs.

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

import_access_logsA

Import Apache/Nginx/Varnish access logs to rebuild Crawl stats. Runs in the background; already-imported files are skipped.

NameRequiredDescriptionDefault
hostNoHost the log belongs to (unless the log has a virtual-host field)
pathsNoLog files or patterns on this PC, e.g. C:\logs\access.log*; .gz is fine. Omit to see import progress
verifyNoVerify Google IPs against Google's published ranges
response_time_unitNoUnit of a trailing response-time field; 'auto' only reads decimal seconds (nginx $request_time)auto

TDQS

A3.7/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, openWorldHint=true and destructiveHint=false, and the description adds genuinely non-obvious behavior: the job runs in the background and already-imported files are skipped (idempotent-ish re-runs). It does not say how the caller learns when the import finished, but the background/idempotency disclosures are real value beyond annotations.

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

Conciseness5/5

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

Two short sentences, zero padding, with the core purpose front-loaded and the operational caveat (background, skip already-imported) immediately after. Nothing to trim.

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?

With no output schema, the description should say what the caller gets back from an import (job id, status handle, or counts) — 'runs in the background' hints at async but leaves the retrieval path unstated. All parameters being optional is also left implicit, relying entirely on the schema.

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?

All four parameters are fully documented in the schema (100% coverage), including the enum for response_time_unit and the 'omit paths to see import progress' usage. The description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Import) plus concrete resources (Apache/Nginx/Varnish access logs) and the outcome (rebuild Crawl stats). It is distinguishable from siblings like crawl_stats, though it never names that sibling or explains the relationship 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 by the stated purpose: you run this when you want Crawl stats rebuilt from server log files. There is no explicit when-to-use/when-not guidance, no mention of alternatives (e.g. crawl_stats, run_inspections), and no prerequisites such as needing access to local log paths.

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

indexing_changesC
Read-only

URLs whose coverage reason changed between their last two inspections (dropped out of the index, newly indexed, ...), plus per-day inspection trend.

NameRequiredDescriptionDefault
daysNo
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
limitNo

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 and openWorldHint=true, so the safety profile is covered. The description adds the meaningful behavioral detail that results depend on two prior inspections and that a trend series is returned alongside the change list, but it omits what happens for URLs with fewer than two inspections and how 'days' bounds the trend window.

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 compact sentence that front-loads the primary result and appends the secondary trend output. The parenthetical examples earn their place; the trailing '...' is slightly sloppy but the sentence is otherwise tight.

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 three-parameter tool with a third of its schema undocumented and no output schema, the description should explain 'days' and 'limit' and the precondition of existing inspection history. It covers the return concept but leaves an agent unable to reason about the window size or result count before calling.

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 only 33% — only 'site' is documented, while 'days' and 'limit' have no schema descriptions. The description's mention of a 'per-day inspection trend' hints that 'days' controls the window, but it says nothing about the row cap implied by 'limit', so 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?

The description names the specific resource (URLs whose coverage reason changed between the last two inspections) and the secondary output (per-day inspection trend), with concrete examples like 'dropped out of the index, newly indexed'. It is distinguishable from siblings such as list_inspected_urls or indexing_report, though it never states the verb 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?

There is no explicit when-to-use guidance and no mention of alternatives among the many indexing/inspection siblings (indexing_report, list_inspected_urls, inspect_url). The only implied precondition is that URLs must have been inspected at least twice, which the agent has to infer from 'between their last two inspections'.

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

indexing_fix_guideA
Read-only

What each Page indexing reason means, whether it's a Website or Google-systems issue, what to check and how to fix it.

NameRequiredDescriptionDefault
reasonNoA coverage reason; omit for all

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds real value beyond that by disclosing the shape of the returned content (meaning, issue attribution, what to check, how to fix), which is the main behavioral question for a no-output-schema tool. It does not clarify whether the content is static documentation or derived from live property data, which is the one remaining ambiguity.

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 tightly constructed sentence that front-loads the core resource ('what each Page indexing reason means') and then enumerates the three additional things it returns. No filler, no repetition of the name or schema.

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 one-optional-parameter reference tool with no output schema, the description is nearly sufficient: it tells the agent what categories of information come back and implies a static knowledge lookup. A short note on whether the guide is generic or property-specific would close the last 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 100% and the schema itself explains the single optional 'reason' parameter, including 'omit for all'. The description adds no further meaning about accepted reason values or format, so the schema does all the work and the baseline of 3 applies.

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

Purpose4/5

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

The description clearly frames a reference/lookup tool: it returns the meaning of a Page indexing coverage reason, classifies it as a site vs. Google-systems issue, and supplies check/fix steps. That is a distinct purpose from siblings like indexing_report or diagnose_url, though it never names those siblings to make the contrast explicit.

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: an agent can infer you call this once you have a coverage reason and need to interpret or remediate it. There is no explicit when-to-use statement, no statement of when not to use it, and no pointer to indexing_report / diagnose_url / inspect_url as the tools for obtaining the reason in the first place.

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

indexing_reportB
Read-only

Page-indexing report from local inspections: indexed vs not, every reason with source, samples, checks and fixes; canonicals, fetch/robots states, crawl age, rich results.

NameRequiredDescriptionDefault
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
sourceNoQueue source
samplesNo
sitemapNoOnly URLs from this sitemap (by our sitemap download or Google's sitemap list)
url_regexNoPython regex on URL
url_containsNoSubstring filter on URL

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful behavioral fact beyond that: the report is computed from previously stored local inspections rather than triggering fresh crawls or API calls. It says nothing about result size, pagination, or behavior when no inspection data exists yet.

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 identifying the report, followed by a compact semicolon-delimited list of contents — no filler. The dense enumeration is a bit listy, but every fragment maps to actual report content, so 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?

With six parameters, high schema coverage, and no output schema, the description must convey what comes back — and it does reasonably well by enumerating report sections. It omits the key operational precondition (inspections must already have been run) and any sense of report scope or limits, which matters for a report-generation 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 83%, so the schema already documents site format, source enum, and the sitemap/url filters; baseline 3 applies. The description adds little beyond that, and its use of 'source' ('every reason with source') refers to reason provenance rather than the 'source' queue parameter, which is mildly confusing rather than helpful.

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 (page-indexing report) and enumerates what it covers: indexed vs not, reasons with source, samples, canonicals, fetch/robots state, crawl age, rich results. The phrase 'from local inspections' distinguishes it from live-lookup siblings like inspect_url or diagnose_url, though it never names those siblings 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?

There is no explicit when-to-use guidance and no named alternative. The only implicit cue is 'from local inspections', which hints that inspection data must already exist (via run_inspections / queue_urls), but this prerequisite is never spelled out, nor is it clear when an agent should pick this over indexing_changes or list_inspected_urls.

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

inspection_jobC

Background inspection while Claude Desktop is open: works through the queue within the daily quota and resumes after restarts.

NameRequiredDescriptionDefault
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
actionNoBackground job controlstatus
stale_daysNoRe-inspect after this many days
daily_limitNoMax inspections per Pacific-Time day for this property

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnly=false, destructive=false, openWorld=true, so the safety profile is covered. The description adds genuine behavioral context beyond that – it runs in the background, respects a daily quota, and resumes after restarts – but stays silent on the state-changing action parameter and what a start call actually enqueues.

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 tight sentence with the key runtime constraint front-loaded after the core purpose. Nothing is wasted, though the space saved is not spent on the operationally important action semantics.

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 job-control tool with three action modes and no output schema, the description should at minimum explain what start, stop, and status return. It covers the long-running/quota behavior well but leaves the control surface, which is the primary invocation path, unexplained.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter including the action enum is documented in the schema itself. The description hints at the daily quota concept (mapping loosely to daily_limit) but adds no syntax or semantics beyond what the schema already states.

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 indicates a background inspection job that drains a queue, but never states the controlling verb set (start/stop/status) that the tool actually exposes. It also does not differentiate it from sibling tools like run_inspections or queue_urls, so the agent must infer the distinction from the name.

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?

It gives a runtime precondition (Claude Desktop must be open), which is useful context, but there is no guidance on when to use this versus run_inspections, and no indication of when each action value (start vs stop vs status) is appropriate.

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

inspect_urlC

Live URL Inspection result from Google (index status, coverage reason, canonicals, last crawl, robots, sitemaps, referring URLs, rich results). Stored locally.

NameRequiredDescriptionDefault
urlYesFull page URL
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
languageNoLanguage for issue messagesen-US

TDQS

C2.7/5.0
Behavior2/5

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

Annotations declare readOnlyHint=false and openWorldHint=true, but the description's phrase 'Stored locally' implies a cached read, creating tension about whether the call mutates or merely retrieves state. It also omits quota/cost behavior, which is significant for a live Google URL Inspection call, and says nothing about what happens when no stored result exists.

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?

It is a single compact sentence with no filler, and the core subject (URL Inspection result from Google) is front-loaded. The parenthetical field list is dense but earns its place by conveying the scope of returned data.

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?

With only three well-documented parameters and no output schema, the definition is minimally sufficient, but it leaves key questions open: whether the result is live or cached, what is returned when nothing is stored, and how it relates to the queue/run_inspections workflow. Annotations cover the safety profile only partially, so the description should carry more behavioral weight than it does.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters (url, site, language) are already documented in the schema, including the accepted property formats. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.

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 identifies the resource (Google URL Inspection result) and enumerates fields it covers, but never uses a clear action verb — it reads like a resource label rather than stating whether the tool fetches a stored inspection, triggers a live one, or both. It also does not distinguish itself from siblings like diagnose_url, run_inspections, or list_inspected_urls, leaving the agent to guess its precise role.

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 guidance at all: no mention of prerequisites (does the URL need to be queued or previously inspected?), no exclusions, and no routing to alternatives such as queue_urls/run_inspections for new inspections or list_inspected_urls for enumeration. The agent must infer all of this from sibling names alone.

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

list_inspected_urlsB
Read-only

URL-level drill-down of stored inspections with filtering, sorting, paging and CSV export.

NameRequiredDescriptionDefault
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
limitNo
offsetNo
indexedNoTrue = indexed only, False = not indexed only
sitemapNoOnly URLs from this sitemap
sort_byNolast_crawl_time
rich_typeNoe.g. 'Product snippets', 'Merchant listings', 'Breadcrumbs', 'Review snippets'
url_regexNo
descendingNo
export_csvNo
url_containsNo
coverage_stateNoExact reason, e.g. 'Crawled - currently not indexed'
has_rich_issuesNo
crawled_before_daysNoOnly URLs last crawled more than N days ago
with_performance_daysNoAdd clicks/impressions per URL for the last N days

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the relevant operational traits: filtering, sorting, paging and CSV export. It does not say what export_csv actually returns (raw CSV text vs. a file path), how paging interacts with offset/limit, or any limits on heavy queries, so it adds moderate but not rich 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 that names the resource and the capability set with no filler. Its terseness is efficient, though it borders on under-specification for a 15-parameter tool.

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?

There is no output schema, 15 parameters at 47% coverage, and the description does not explain the returned record shape (URL, coverage state, rich results, optional performance metrics), the effect of with_performance_days, or CSV export mechanics. For a tool of this complexity the description is materially incomplete.

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 15 parameters and only 47% schema description coverage, the description carries a heavy burden, yet it only gestures at 'filtering, sorting, paging and CSV export.' Undocumented parameters such as url_regex, url_contains, descending, has_rich_issues, and the semantics of export_csv vs. limit/offset receive no explanation, so the agent must guess behavior from bare titles.

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: a URL-level listing of stored inspection data, with filter/sort/page/export capabilities. That is enough to separate it from inspect_url or diagnose_url, which perform new inspections rather than list stored results, though the description never names those siblings 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?

The phrase 'stored inspections' implies this reads previously collected data rather than running new audits, and the filter/sort/export list implies analytic drill-down. However, there is no explicit when-to-use or when-not-to-use guidance against siblings like indexing_report, crawl_stats, or inspect_url, leaving the agent to infer selection.

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

list_propertiesA
Read-only

All Search Console properties this Google account can access, with permission level.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds that results are scoped to the account and include permission level, but it does not describe pagination, ordering, or return shape beyond that.

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

Conciseness5/5

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

A single front-loaded sentence with no redundant wording. It communicates the resource and returned permission level efficiently.

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 zero-parameter discovery tool with read-only annotations and no output schema, the description covers what is listed and the key returned field. It could mention how many or in what format properties are returned, but it is adequate.

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

Parameters4/5

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

The tool has zero parameters, so there are no parameter meanings to add beyond the schema. The baseline for a no-parameter tool is 4.

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 verb (list) and resource (Search Console properties) and scopes it to those the Google account can access. It is clear, though it does not explicitly differentiate itself from property-specific siblings such as property_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 when-to-use guidance, no named alternative, and no prerequisite indicating this should be called to discover property names before using property-specific tools. Usage is only inferable from the name and description.

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

list_sitemapsC
Read-only

Sitemaps submitted for the property: last submitted/downloaded, pending, errors, warnings, submitted URL counts by type.

NameRequiredDescriptionDefault
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
sitemap_indexNoOnly children of this sitemap index

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 and openWorldHint=true, so the safety profile is covered. The description adds useful content about what the response contains (last submitted/downloaded timestamps, pending state, errors, warnings, URL counts by type), which is real value beyond annotations, but it says nothing about pagination, entry limits, or behavior when the property has no sitemaps.

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 compact sentence that front-loads the resource and then enumerates the returned fields; nothing is wasted. It is slightly under-specified rather than verbose, but structurally clean.

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 simple two-parameter read tool with an output schema absent, the description adequately compensates by enumerating the returned fields. It falls short on the relationship to sibling tools and on any volume or pagination expectations, which an agent would need for correct invocation strategy.

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

Parameters3/5

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

Schema description coverage is 100%, with both the site format and the sitemap_index filter documented in the schema itself. The description adds no additional meaning about the sitemap_index filtering behavior, so the baseline 3 applies.

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 fragment 'Sitemaps submitted for the property' identifies the resource and scope, and the trailing list names the data fields returned, so the agent can infer this is a read/list operation. However, there is no explicit verb and no differentiation from sibling tools such as get_sitemap or queue_from_sitemaps, leaving the agent to guess at the distinction.

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 contains no when-to-use guidance, no prerequisites, and no mention of alternatives. An agent facing a large sibling set including get_sitemap and queue_from_sitemaps gets no help deciding which to call.

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

multi_site_dashboardB
Read-only

Health check across many properties at once: clicks, impressions, CTR, position vs previous period, flagged dropping/growing.

NameRequiredDescriptionDefault
daysNo
drop_pctNoChange that flags a property as dropping/growing
propertiesNoDefault: every accessible property

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds genuine behavioral context — results are compared against a previous period and properties are flagged as dropping/growing — but says nothing about how many properties are returned at once, ordering, or what a 'flag' looks like in 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.

Conciseness4/5

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

A single dense sentence with the multi-property scope front-loaded and no wasted words. The telegraphic style ('flagged dropping/growing') is terse to the point of being slightly clipped, but nothing is redundant.

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?

With no output schema, the description does double duty and only partially delivers: it lists the metrics and the dropping/growing flag concept, which is the minimum needed to interpret results, but omits any indication of response shape or per-property structure. Adequate for a 3-parameter read-only aggregation tool, but thin.

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 67%; drop_pct and properties are already documented in the schema. The description's 'vs previous period' implies the days window governs both the current and comparison ranges, which adds real meaning the bare 'Days' schema field lacks, but it never states this explicitly nor explains the 7–90 bounds.

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 verb+resource ('health check across many properties') and enumerates the metrics returned (clicks, impressions, CTR, position) plus the comparison and flagging behavior. 'Across many properties at once' implicitly separates it from single-property siblings like property_overview, 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'health check across many properties at once' implies the usage context (multi-property triage), but there is no explicit when-to-use vs. when-not, and no pointer to alternatives such as property_overview, compare_periods, or traffic_drops for drilling into a single site or a specific anomaly.

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

pagespeed_auditB
Read-only

PageSpeed Insights: Lighthouse scores, lab metrics, top opportunities by savings, failing SEO/other audits, and real-user field data. Uses PAGESPEED_API_KEY or CRUX_API_KEY if set.

NameRequiredDescriptionDefault
urlYes
strategyNoMOBILE
categoriesNoLighthouse categories

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external-call behavior are covered. The description adds a genuinely useful prerequisite — it consumes PAGESPEED_API_KEY or CRUX_API_KEY when set — but says nothing about what happens without keys, rate limits, or how long the audit takes, which matters for a live external API call.

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 dense sentence with no filler, front-loading the data returned and ending with the credential note. It is efficient, though the comma-list of outputs reads as a feature dump rather than a structured lead-in.

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?

With no output schema, the description usefully enumerates the return payload, and it covers the API key prerequisite. However, for a 3-parameter external audit tool it omits parameter guidance and any hint about usage relative to the many sibling performance 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 coverage is only 33%: only 'categories' is documented in the schema, while 'url' and 'strategy' carry no description. The description adds no parameter meaning at all — it never mentions strategy defaults, that url must be a publicly reachable page, or what happens when categories is null, so 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?

The description enumerates what the tool returns (Lighthouse scores, lab metrics, opportunities by savings, failing SEO audits, field data), which makes the underlying action — run a PageSpeed Insights audit — easy to infer. It never states the verb explicitly and does not distinguish itself from siblings such as core_web_vitals or performance_overview, which also cover performance/field data.

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 guidance, no exclusions, and no named alternative. An agent choosing between pagespeed_audit, core_web_vitals, performance_query, and diagnose_url gets no routing help beyond the output list.

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

performance_overviewB
Read-only

Totals vs the previous equal-length period, daily series, top queries and pages. Use search_type='discover' for Discover.

NameRequiredDescriptionDefault
daysNoDays ending yesterday (PT); ignored if start_date is given
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
end_dateNoYYYY-MM-DD (Pacific Time)
start_dateNoYYYY-MM-DD (Pacific Time)
search_typeNoSearch Console search type; 'discover' = Discover reportweb

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that results are compared against a previous equal-length period, which is useful behavioral context about the output, but says nothing about rate limits, quota cost, or data-freshness/lag that matter for a Search Console analytics call.

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 sentences with the substantive content first and no filler. The phrasing is telegraphic and lacks a verb, 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?

For a read-only reporting tool with a fully documented 5-parameter schema and no output schema, the description tells the agent what it receives (totals, comparison, daily series, top queries/pages). What is missing is routing guidance against the many overlapping performance siblings, which is the main decision an agent faces here.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters, including date formats and the days/start_date interaction, are already documented in the schema. The description's search_type note adds no meaning beyond the enum description already present, so the baseline of 3 applies.

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

Purpose4/5

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

The description names the concrete outputs — totals vs the previous equal-length period, daily series, top queries and pages — so an agent knows exactly what resource shape it gets back. It does not distinguish itself from near-siblings like compare_periods, performance_query, or property_overview, which keeps it from 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?

The only usage direction is 'Use search_type=discover for Discover', which is a restatement of the enum documentation rather than a when-to-use rule. There is no guidance about when this overview is preferable to compare_periods or performance_query, despite those siblings existing.

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

performance_queryB
Read-only

Search performance (clicks, impressions, CTR, position) for any dimension combination, search type, date range and filters.

NameRequiredDescriptionDefault
daysNoDays ending yesterday (PT); ignored if start_date is given
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
filtersNoAND filters: [{dimension: query|page|country|device|searchAppearance, operator: equals|notEquals|contains|notContains|includingRegex|excludingRegex, expression}]
sort_byNoSort rowsclicks
end_dateNoYYYY-MM-DD (Pacific Time)
max_rowsNoRows to fetch (pages of 25,000)
data_stateNo'all' matches the UI (includes fresh data); 'final' = finalised onlyall
dimensionsNoGroup-by dimensions. 'hour' gives hourly data for recent days. Empty = totals only
export_csvNoWrite all fetched rows to a CSV file
start_dateNoYYYY-MM-DD (Pacific Time)
aggregationNoHow results are aggregatedauto
return_rowsNoRows to return in chat; the rest only in the CSV
search_typeNoSearch Console search type; 'discover' = Discover reportweb

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds useful output context by naming the performance metrics available and the flexible grouping/filtering scope, but it does not disclose row-limit behavior, pagination, CSV export side effects, data freshness, or aggregation semantics beyond what the schema already states.

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?

It is a single front-loaded sentence with no filler, and the metric list is efficient. It is slightly too terse for a 13-parameter tool, but the wording itself is clean and structurally sound.

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 complex 13-parameter tool with no output schema, the description is only minimally adequate. It identifies the metrics and query flexibility, but it omits return shape, pagination/row-limit behavior, CSV export implications, and how aggregation or data_state affect results, leaving much of the operational context to the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 13 parameters, including dimensions, filters, dates, row limits, CSV export, and aggregation. The description adds no parameter-level meaning beyond echoing dimensions, search type, date range, and filters, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description gives a specific verb ('Search') and resource ('performance') and enumerates the metrics returned (clicks, impressions, CTR, position), so it is more than a restatement of the name. It does not explicitly distinguish this tool from close siblings such as performance_overview, compare_periods, or query_segments, which keeps it from 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?

The phrase 'for any dimension combination, search type, date range and filters' implies this is the flexible raw performance-query tool, but it gives no explicit when-to-use guidance, prerequisites, or exclusions. It never names performance_overview or compare_periods as alternatives for summarized or comparative views, leaving the agent to infer routing.

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

property_notesC

Context saved with a property for future chats: brand terms, migration dates, decisions, site changes.

NameRequiredDescriptionDefault
kindNobrand_terms = comma-separated brand names used by query_segmentsnote
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
textNo
actionNolist
note_idNo

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=false and openWorldHint=true, and the description usefully adds that notes persist 'for future chats'. However, it never discloses that the tool also supports a delete action, whether deletion is permanent, whether notes are scoped to a single property, or what a list call returns — significant omissions for a stateful store.

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 compact sentence with no filler and the core concept ('context saved with a property') up front. It is efficient but border-line under-specified rather than merely tight, and the trailing colon list of kinds reads as an enumeration rather than a purpose statement.

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?

This is a five-parameter, mutating, open-world tool with 40% schema coverage and no output schema, so the description carries real weight. It omits the action lifecycle (add vs list vs delete), what happens on delete, and what a list returns, leaving an agent unable to use it correctly for anything but a default list call.

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 only 40%, but the description does add meaning for the hardest parameter by naming the note categories that correspond to the `kind` enum values. It gives nothing for `action` (list/add/delete), `note_id`, or `text`, leaving the create/delete workflow to be inferred from bare enum values.

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 conveys the resource (per-property notes/context) and the categories it stores (brand terms, migration dates, decisions, site changes), which maps to the `kind` enum. But it is phrased as a noun clause ('Context saved with a property') with no verb, so an agent cannot tell from the text that this tool lists, adds, and deletes notes, nor that 'list' is the default action.

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 guidance: nothing says to call this before `query_segments` for brand terms, or to check existing notes before recording a decision. The only routing hint ('brand terms used by query_segments') lives in the schema's `kind` description, not here, and no sibling tool is named as an alternative or complement.

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

property_overviewA
Read-only

One-call overview: web + Discover performance vs previous period, sitemaps health, local indexing summary, robots.txt status.

NameRequiredDescriptionDefault
daysNoDays ending yesterday (PT); ignored if start_date is given
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external-dependency behavior are covered. The description adds useful scope detail (which subsystems are aggregated, that metrics are compared to a previous period), but says nothing about partial failures, missing data, or how many upstream calls are made per 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 dense sentence that front-loads the key framing ('one-call overview') and then lists the signal groups. No filler, though a fragment rather than a sentence and a comma-list that could be segmented for faster scanning.

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 composite read-only tool with no output schema, the description enumerates the major result sections, which is the essential information an agent needs to decide to call it. It stops short of indicating response shape or aggregation granularity, but nothing critical to invocation is missing.

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 coverage is 100% and the schema itself explains the PT day window, the 490-day cap, the default of 28, and the precedence of start_date over days, plus accepted site formats. The description's 'vs previous period' phrase is consistent with those semantics, so no additional parameter explanation is needed for correct invocation.

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 composite resource ('one-call overview') and enumerates the contents: web + Discover performance vs previous period, sitemaps health, local indexing summary, robots.txt status. This clearly separates it from single-purpose siblings like sitemaps or robots_txt_check, though it never names the nearest alternative (performance_overview, multi_site_dashboard) 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 implied rather than stated: 'one-call overview' suggests a first-pass/triage use, but there is no explicit when-to-use, when-not-to-use, or pointer to alternatives such as performance_overview or compare_periods. An agent must infer the slot from the enumerated contents.

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

query_segmentsC
Read-only

Queries split into branded vs non-branded, questions (EN/NL/SV/PT/FR/DE), query length, results page, and chat-style fragments.

NameRequiredDescriptionDefault
daysNoDays ending yesterday (PT); ignored if start_date is given
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
top_nNo
end_dateNoYYYY-MM-DD (Pacific Time)
start_dateNoYYYY-MM-DD (Pacific Time)
brand_termsNoBrand names/spellings; default = the property's brand_terms note
search_typeNoweb

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 and openWorldHint=true, so the safety profile is covered. The description adds value by disclosing the segmentation dimensions the tool computes, which is real behavioral context. However, it says nothing about aggregation, result limits (top_n), time-zone handling, or the brand_terms fallback to property notes.

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, and the segment list is the most information-dense part. The opening 'Queries split into' is slightly awkward phrasing but wastes no words.

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 seven parameters, no output schema, and a multi-dimensional aggregation result, the description should explain the return shape and how the dimensions are grouped. It also omits date-range behavior (days vs start_date/end_date, Pacific Time) and the brand_terms default, leaving the agent under-informed about a non-trivial report 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 71%, with top_n and search_type carrying no description at all. The description mentions no parameter by name — not brand_terms (which drives the branded/non-branded split), not search_type, not top_n — so it adds essentially no meaning beyond the schema and leaves the undocumented parameters doubly 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?

The description names a concrete analysis ('Queries split into...') and enumerates the actual segment dimensions: branded vs non-branded, question queries with specific languages, query length, results page, and chat-style fragments. An agent can tell this is a query-segmentation report rather than a raw performance pull. It stops short of naming a sibling such as performance_query as the alternative, so it doesn't 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 mention of alternative tools. The agent must infer from the segment list that this is for query-intent analysis, but nothing says when to pick it over performance_query or find_opportunities.

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

queue_from_performanceB

Queue every page that got impressions in Search (useful to inspect the pages Google actually shows).

NameRequiredDescriptionDefault
daysNoDays ending yesterday (PT); ignored if start_date is given
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
max_urlsNo
search_typeNoSearch Console search type; 'discover' = Discover reportweb
min_impressionsNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the agent knows this mutates state against an external system. The description adds the useful context that the URL set is derived from Search performance data, but says nothing about what the queue feeds into, whether re-queueing duplicates work, or any volume/rate implications of pulling up to 25k URLs.

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 the action first and the rationale second; nothing is wasted. It is arguably too terse rather than too long, but structurally sound.

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 five-parameter, state-mutating tool with no output schema, the description covers the source of the URLs but omits what happens after queueing, how the queued set relates to run_inspections, and any limits. Adequate to call it, not adequate to predict its effects.

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 only 60%, and the description adds no meaning for days, max_urls, search_type or min_impressions beyond the word 'impressions' loosely gesturing at the filter. With a moderate coverage gap and no compensating explanation of defaults or the date window, the description does little work here.

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 ('Queue') and a precisely scoped resource ('every page that got impressions in Search'), which lets an agent distinguish it from queue_urls and queue_from_sitemaps by the URL source. It stops short of naming those siblings explicitly, so it is clear but not fully differentiated.

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 '(useful to inspect the pages Google actually shows)' gives a rationale for choosing this tool over other queueing tools, which implies the when-to-use case. However, it never states when NOT to use it or names the alternative queueing siblings, leaving the routing decision partly to inference.

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

queue_from_sitemapsA

Download sitemaps (indexes, .gz) and queue every page URL for inspection, remembering which sitemap each URL came from.

NameRequiredDescriptionDefault
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
max_urlsNo
sitemap_urlNoOne sitemap or index; default = every sitemap submitted in Search Console

TDQS

A3.6/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false and openWorldHint=true; the description usefully adds that it fetches over the network (including nested indexes and .gz) and records per-URL sitemap provenance. It omits key behavioral facts for a state-mutating tool: whether the queue is replaced or appended, deduplication of already-queued URLs, and what happens when max_urls truncates the set.

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 dense sentence with the action and the provenance behavior front-loaded; no filler to remove.

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 three-parameter tool with no output schema, the description covers what it consumes and what it produces (a queued URL set with sitemap attribution). The remaining gap is queue semantics (replace vs append) and the downstream inspection step.

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 67%, with 'site' and 'sitemap_url' (including the 'default = every sitemap submitted in Search Console' behavior) already documented in the schema. The description adds no meaning for 'max_urls', which has no schema description and is the parameter most likely to cause surprise truncation given the claim of queuing 'every page URL'.

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?

Uses specific verbs and resources ('Download sitemaps (indexes, .gz) and queue every page URL for inspection'), so the agent knows exactly what the tool does. It never names a sibling (queue_urls, queue_from_performance, list_sitemaps) to contrast against, so sibling differentiation is left to inference.

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 'queue every page URL for inspection' implies this is the seeding step before run_inspections, but no explicit when-to-use or when-not guidance is given. Nothing tells the agent whether to pick this over queue_urls or queue_from_performance.

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

queue_urlsB

Add URLs to this property's local inspection queue.

NameRequiredDescriptionDefault
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
urlsYesFull URLs inside the property
labelNoSource label for filtering latermanual

TDQS

B3.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 and openWorldHint=true. The description usefully clarifies that the queue is 'local' and per-property, which softens the openWorld expectation, but it says nothing about duplicate handling, queue size limits, or what state the URLs enter until inspections run.

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 sentence with no waste, and the destination ('local inspection queue') is placed before any caveats. It is efficient, though its brevity borders on under-specification for a queue-mutating tool.

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 three-parameter enqueue tool with no output schema and adequate annotations, the definition is minimally sufficient. It leaves a gap around what happens after queuing and how the queue is drained, which an agent needs to sequence this tool correctly.

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

Parameters3/5

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

Schema coverage is 100%, so site formats, the URL array, and the 'label' default of 'manual' are all documented structurally. The description adds no meaning beyond that, contributing nothing about how label affects later filtering or whether URLs must be inside the property. Baseline 3 applies.

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

Purpose4/5

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

States a concrete verb and resource ('Add URLs') and a specific destination ('this property's local inspection queue'), which separates it from queue_from_sitemaps and queue_from_performance by implication of a manual, locally-supplied list. It stops short of naming the sibling queue tools, so differentiation is inferential rather than explicit.

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 at all. The description never tells the agent to prefer queue_from_sitemaps or queue_from_performance when the URLs originate there, nor that run_inspections must be called afterward to actually process the queue; only the word 'queue' hints at the workflow.

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

robots_txt_checkA

Fetch robots.txt like Googlebot: status and Google's interpretation, size vs the 500 KiB limit, groups, Googlebot rules, sitemaps, syntax warnings, and a diff if it changed since the last check. Saved to history.

NameRequiredDescriptionDefault
host_or_urlYesHost, URL or sc-domain property, e.g. www.example.com

TDQS

A3.8/5.0
Behavior4/5

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

Annotations declare openWorldHint=true and destructiveHint=false, and the description meaningfully extends this by disclosing the Googlebot user-agent emulation, the 500 KiB evaluation threshold, and the side effect of persisting results to history (consistent with readOnlyHint=false). It stops short of noting auth requirements, rate limiting, or what happens for a missing/erroring robots.txt, which would matter for a remote fetch.

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 front-loaded sentence with the action first and the returned artifacts following as a compact enumeration. Every clause maps to a real output; nothing redundant or 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?

There is no output schema, so the description usefully enumerates what comes back, including the size-limit check and Google's own interpretation. For a one-parameter read-plus-history tool this is close to complete; only edge-case behavior (robots.txt missing, 4xx/5xx, blocked fetch) is 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?

With a single parameter at 100% schema coverage, the schema already documents that host, URL, or sc-domain property is accepted. The description adds no formatting or normalization guidance beyond that, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Fetch robots.txt like Googlebot') and enumerates the concrete outputs (status, size vs 500 KiB, groups, Googlebot rules, sitemaps, syntax warnings, diff). It does not, however, distinguish itself from the closely named sibling robots_txt_check_property, and its mention of 'diff' and 'history' overlaps conceptually with robots_txt_diff and robots_txt_history.

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: an agent can infer this is for validating crawlability of robots.txt as Googlebot, versus robots_txt_test (live rule testing) or robots_txt_watch (ongoing monitoring). There is no explicit when-to-use statement, no exclusions, and no sibling is named as an alternative.

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

robots_txt_check_propertyA

Check robots.txt on every host that had Search traffic in the property (all subdomains of a Domain property).

NameRequiredDescriptionDefault
daysNoDays ending yesterday (PT); ignored if start_date is given
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
max_hostsNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare openWorldHint=true, destructiveHint=false, and readOnlyHint=false. The description adds useful operational scope: hosts are selected by Search traffic and Domain properties expand to all subdomains. It does not explain rate limits, permissions, result format, or the behavior implied by a 'check' tool not being marked read-only.

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 with no filler, and the parenthetical adds useful scope detail. The description is appropriately sized for this tool.

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 description is adequate for a property-level diagnostic, but with no output schema it should explain what the check returns (per-host statuses, errors, or summaries) and how days and max_hosts constrain coverage. Those omissions leave gaps in result shape and practical limits.

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?

With 67% schema description coverage, the baseline is 3. The description adds meaning to the site/property parameter by noting Domain-property subdomain coverage, but it does not explain days (how the traffic lookback is used) or max_hosts (the cap on hosts checked), and max_hosts has no schema description either.

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 uses a specific verb and resource ('Check robots.txt') and clearly states the scope: every host with Search traffic in the property, including subdomains of a Domain property. It is distinguishable from a single-host check, though it does not explicitly name the sibling robots_txt_check.

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 property-wide use case is implied clearly by 'every host that had Search traffic in the property,' but there is no explicit when-not guidance or routing to robots_txt_check for a single host/site. An agent can infer when to use it, but alternatives are not addressed.

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

robots_txt_diffA
Read-only

Unified diff between two stored robots.txt checks (ids from robots_txt_history).

NameRequiredDescriptionDefault
to_check_idYes
from_check_idYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that output is a unified diff and that inputs are historical check ids, but says nothing about diff size, truncation, or behavior when the two checks are identical. Adequate but not rich.

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 tight sentence with the key qualifier (ids from robots_txt_history) placed where it is immediately visible. Nothing is wasted, though the sentence is so terse that a small amount of clarifying structure could have been added at no cost.

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?

This is a simple two-parameter read-only tool with no output schema, so the description does not need to explain return values. Combined with annotations, an agent has enough to invoke it correctly; only the direction semantics of from/to remain ambiguous.

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 clarify that both ids come from robots_txt_history, which is genuinely useful. However, it does not clarify the from/to directionality – whether the diff reads as changes from from_check_id to to_check_id.

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 operation and resource: a unified diff between two stored robots.txt checks. Pointing to robots_txt_history as the source of ids distinguishes it from robots_txt_check and robots_txt_test, though it does not explicitly say what the diff is used for.

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 by the phrase 'stored robots.txt checks' – you need prior checks to diff – and the parenthetical points to robots_txt_history for obtaining ids. There is no explicit statement of when to prefer this over robots_txt_check or robots_txt_history, nor any exclusion.

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

robots_txt_historyB
Read-only

Every stored robots.txt check for a host (date, status, size, hash, response time) and each distinct version with first/last seen.

NameRequiredDescriptionDefault
limitNo
host_or_urlYes

TDQS

B3.2/5.0
Behavior3/5

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

The annotations already establish readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description usefully adds what the response contains (per-check fields and distinct versions with first/last seen), but says nothing about ordering, pagination behavior, or what happens when a host has no stored checks.

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 dense sentence that front-loads the primary return content and appends the version aggregation. No filler, though the parenthetical field list slightly crowds out the missing parameter guidance.

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?

With no output schema, the description must explain return values, and it does list the per-check fields and the version summary. However, it leaves the limit parameter and the host-vs-URL input form unexplained, which are material gaps for a two-parameter lookup 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%, so the description carries the full burden. It clarifies that host_or_url targets a single host, but it never explains that a full URL is also accepted, and it does not mention limit at all — not its default, its maximum, or what it caps (checks vs. versions).

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 the specific resource (stored robots.txt checks) and the scope (one host), and it lists the fields returned plus the aggregated version view. It implicitly distinguishes itself from live-check siblings like robots_txt_check by emphasizing 'stored' history, though it never names an alternative 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: the word 'stored' signals this is for retrospection rather than a fresh fetch, which contrasts with robots_txt_check and robots_txt_diff. There is no explicit when-to-use, when-not-to-use, or named-alternative guidance.

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

robots_txt_testA
Read-only

Is this URL allowed for this crawler? Returns the deciding rule and line, using Google's matching rules.

NameRequiredDescriptionDefault
urlYesFull URL to test
check_idNoTest against a stored version instead of the live file
user_agentNoGooglebot, Googlebot-Image, Googlebot-News, Googlebot-Video, Storebot-Google, AdsBot-Google, Google-Extended, or any tokenGooglebot
show_contentNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful behavioral context by stating it returns the deciding rule and line and follows Google's matching rules, though it does not explain live-fetch behavior or error cases.

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 core question and followed by the key return information. There is no unnecessary wording and the structure is immediately scannable.

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

Completeness4/5

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

For a read-only query tool with no output schema, the description covers the purpose, matching standard, and what the result contains (the deciding rule and line). It leaves some gaps around live versus stored checks and the show_content flag, but those are largely covered by the input schema.

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 75%, with clear descriptions for url, check_id, and user_agent, so the schema carries most parameter meaning. The description adds only the notion of a crawler and Google's matching rules, and does not clarify show_content or stored-version testing beyond what the schema already provides.

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 question ('Is this URL allowed for this crawler?') and the resource being tested (URL against a crawler's rules). It also clarifies the matching standard ('Google's matching rules'), though it does not explicitly distinguish this from sibling tools like robots_txt_check or robots_txt_check_property.

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: test a single URL against a crawler's robots.txt rules using Google's matching semantics. However, there is no explicit guidance on when to use this versus robots_txt_check, robots_txt_check_property, or robots_txt_history, and no exclusions or prerequisites are stated.

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

robots_txt_watchB

Keep checking robots.txt for a host in the background (while Claude Desktop is open) to build version history.

NameRequiredDescriptionDefault
actionNoWatch list controllist
host_or_urlNo
interval_hoursNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is partly covered, but a false readOnlyHint on a polling tool is exactly the kind of thing that needs explanation. The description does add genuinely useful behavior the annotations cannot convey: the watch persists in the background and only advances while Claude Desktop is open. It stops short of saying what happens to accumulated history, how often checks actually fire, or that no version is captured while the app is closed.

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 sentence with no filler, and the most important qualifier, the Desktop-only background nature, is embedded early rather than buried. It is efficient, though it burns its brevity on runtime context instead of the operation controls.

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?

There is no output schema and no annotation nuance to lean on, so the description carries the full burden for a three-parameter, stateful, three-mode tool. It omits what each action returns, whether watches survive restarts, and how the gathered history relates to robots_txt_history and robots_txt_diff.

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 only 33%, and the description does not mention any of the three parameters. Nothing explains that 'action' toggles add/remove/list, what form host_or_url takes, or that interval_hours defaults to 24 and is capped at 168. With low coverage the description was expected to compensate and 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?

The description states a specific verb and resource: repeatedly polling a host's robots.txt to accumulate version history, with the notable scoping constraint that it runs only while Claude Desktop is open. It is clear on its own but never names or contrasts with the siblings an agent would naturally confuse it with, such as robots_txt_check, robots_txt_history, or robots_txt_diff.

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: an agent can infer this is for setting up recurring monitoring rather than a one-off fetch, and the parenthetical gives the runtime condition. There is no explicit 'use this instead of robots_txt_check when...' guidance and no statement about when watching is unnecessary.

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

run_inspectionsA

Inspect URLs now: the queue (never-inspected first, then stale), an explicit list, or your top pages. Respects the 2,000/day and 600/minute per-property quotas.

NameRequiredDescriptionDefault
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
urlsNoInspect exactly these URLs instead of the queue
max_urlsNo
top_pagesNoInspect the top N pages by clicks (last 28 days)
stale_daysNoRe-inspect URLs whose last inspection is older than this
concurrencyNo
recrawled_sinceNoYYYY-MM-DD: also report whether Google crawled each URL after this date
time_budget_secondsNoStop after this long; call again to continue

TDQS

A3.7/5.0
Behavior4/5

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

With readOnlyHint=false and openWorldHint=true already declared, the description adds genuinely useful behavioral context the annotations cannot carry: the 2,000/day and 600/minute per-property quota ceilings that govern whether a call will succeed. The queue ordering (never-inspected first, then stale) further clarifies what actually happens. It stops short of saying the call consumes quota against a shared budget or that results may be partial when the time budget elapses.

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

Conciseness5/5

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

Two sentences, front-loaded with the action and mode selection, then the quota constraint. No filler and nothing structurally out of order.

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 an 8-parameter, no-output-schema tool with an open-world flag and real quota cost, the description covers mode selection and rate limits adequately. It omits what the caller gets back from an inspection run (per-URL verdicts, coverage state, errors) and whether a time-budget expiry yields resumable partial results, both of which an agent needs to plan around.

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 75%, so the schema already documents `urls`, `top_pages`, `stale_days`, `recrawled_since`, and `time_budget_seconds`. The description usefully explains the queue default ordering that `stale_days` governs, but says nothing about `max_urls`, `concurrency`, or the interaction between the mode-selecting parameters, leaving the remaining gap unfilled.

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 opens with a specific verb and resource ("Inspect URLs now") and enumerates three operating modes: the queue, an explicit URL list, or top pages. That distinguishes it from the single-URL sibling `inspect_url`, but no sibling is named explicitly, so differentiation is inferred 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 three modes imply when to use each (pass `urls` for an explicit list, `top_pages` for top pages, nothing for the queue), which maps loosely onto the parameters. However, there is no guidance on precedence when `urls` and `top_pages` are both supplied, no exclusions, and no pointer to alternatives such as `queue_urls` or `inspect_url` for queuing versus executing.

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

section_performanceA
Read-only

Performance per site section (URL folder or custom prefixes) with share of clicks and change vs the previous period. Domain properties are split per host.

NameRequiredDescriptionDefault
daysNoDays ending yesterday (PT); ignored if start_date is given
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
levelNoFolder depth: 1 = /blog/, 2 = /blog/seo/
top_nNo
end_dateNoYYYY-MM-DD (Pacific Time)
prefixesNoCustom sections by path prefix, e.g. ['/blog/', '/women/']
start_dateNoYYYY-MM-DD (Pacific Time)
search_typeNoSearch Console search type; 'discover' = Discover reportweb
compare_previousNo

TDQS

A3.6/5.0
Behavior4/5

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

Beyond readOnly/openWorld annotations it discloses two non-obvious behaviors: that results include share of clicks and a comparison against the previous period, and that domain (sc-domain) properties are split per host rather than aggregated. It does not say how truncation via top_n affects the delivered shares, which is the remaining behavioral gap.

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, front-loaded with the metric and entity, no filler. The closing sentence about domain properties is terse to the point of being slightly cryptic about what 'split per host' means for the rows returned.

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 9-parameter tool with no output schema, the description covers the core metric but omits the default window, how top_n interacts with reported shares, and whether level or prefixes takes precedence. Enough to call it, not enough to call it correctly on the first try in edge cases.

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 78% and the schema already explains level, prefixes, dates and days well. The description adds the conceptual link between 'section' and the level/prefixes parameters, which helps an agent choose between them, but it says nothing about top_n, compare_previous, or precedence rules. Baseline 3 given the strong schema.

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 and scope: performance aggregated per site section, either a URL folder depth or custom prefixes, with click share and period-over-period change. That is clearly distinct from query-level or page-level tools, but no sibling (performance_query, performance_overview, query_segments) is named, so differentiation is left to inference.

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 by the aggregation unit ('per site section') – an agent can reason that this is the tool for folder-prefix rollups, but nothing states when to prefer it over performance_overview or compare_periods. No exclusions or prerequisites are given.

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

server_statusB
Read-only

Server health: credentials, local database, inspection queues, background jobs, robots.txt watches, today's inspection quota use.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real value by disclosing the breadth of what is checked (credentials, DB, queues, jobs, robots.txt watches, quota), which signals this is a composite probe that may touch multiple subsystems. It says nothing about latency, whether checks are live or cached, or how failures are surfaced, leaving behavioral 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?

One dense line, zero filler, scope front-loaded with 'Server health' before the enumeration. The trade-off is that it is a bare fragment rather than a complete sentence, so the agent must infer the verb ('report/check') itself.

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 parameterless diagnostic with no output schema, the description tells the agent what areas are inspected but not what a result looks like (per-component pass/fail, degraded states, quota numbers) or how to react to a failure. That leaves a meaningful gap, though the component list is enough to justify calling it during troubleshooting.

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 is nothing for the description to clarify beyond what the schema provides; baseline 4 applies. The enumerated list is a report of coverage, not parameter meaning, but no compensation is needed.

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 phrase 'Server health' plus an enumerated list of subsystems (credentials, local database, inspection queues, background jobs, robots.txt watches, quota use) makes the resource and scope unambiguous — an agent knows this is an aggregate diagnostic status read. It is a noun fragment with no verb and draws no boundary against siblings such as check_alerts or inspection_job, which keeps it out of 5 territory.

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 at all — no statement like 'call first when tools fail' or 'use instead of check_alerts for backend health'. The list of subsystems only implies diagnostic usage; it never routes the agent relative to the many nearby inspection and robots.txt siblings.

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

traffic_dropsA
Read-only

Pages/queries that lost clicks vs the previous period, each diagnosed: ranking loss, CTR drop, demand drop or disappeared, with the click loss split exactly into fewer impressions vs lower CTR.

NameRequiredDescriptionDefault
daysNoDays ending yesterday (PT); ignored if start_date is given
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
top_nNo
end_dateNoYYYY-MM-DD (Pacific Time)
dimensionNoWhat lost trafficpage
start_dateNoYYYY-MM-DD (Pacific Time)
explain_topNoFor the N biggest drops, list the queries (or pages) that lost most
search_typeNoweb
min_clicks_prevNo
position_thresholdNoPosition worsening that counts as ranking loss

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuine value by disclosing the output taxonomy and that losses are split into impression loss vs CTR loss, but says nothing about ordering, result limits, cost, or how the comparison window is anchored beyond 'previous period'.

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 dense sentence that front-loads the resource and scope before the diagnostic detail; nothing is redundant. It is jargon-heavy enough that a first-time reader may need a second pass, but every clause conveys 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?

With 10 parameters and no output schema, the description does well to enumerate the diagnostic categories the tool returns, partially substituting for a return-value spec. However, it leaves gaps on result ordering, how min_clicks_prev and top_n interact with the drop ranking, and what the per-drop explanation payload looks like.

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 70%, so most parameters are already documented. The description indirectly explains the purpose of position_threshold (ranking loss) and the demand/min_clicks filtering, but it never addresses top_n, explain_top, dimension, or search_type behavior. Baseline 3 is appropriate when the schema carries most of the burden.

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

Purpose5/5

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

States a specific verb and resource ('pages/queries that lost clicks vs the previous period') plus the diagnostic taxonomy (ranking loss, CTR drop, demand drop, disappeared) and the exact decomposition of click loss. An agent can distinguish this from generic period comparison or performance listing tools 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 framing as a loss-diagnosis tool implies when to use it, but there is no explicit guidance on when to prefer it over siblings such as compare_periods, content_decay, find_opportunities, or performance_query. No exclusions or prerequisites are stated.

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

verify_metricB
Read-only

Re-query Google to confirm a number before presenting it (e.g. 'this page got 500 clicks').

NameRequiredDescriptionDefault
daysNoDays ending yesterday (PT); ignored if start_date is given
pageNoExact page URL
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
queryNoExact query
deviceNo
metricYes
countryNoISO-3166 alpha-3, e.g. nld
end_dateNoYYYY-MM-DD (Pacific Time)
expectedYes
start_dateNoYYYY-MM-DD (Pacific Time)
search_typeNoSearch Console search type; 'discover' = Discover reportweb
tolerance_pctNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that this hits Google again (a live external call), but omits the key behavioral outcome: what happens on a mismatch, whether a failed verification raises an error, and what tolerance_pct does to the result.

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 an illustrative example and no filler. It is efficient, though the single-sentence brevity is part of why behavioral and parameter detail are missing.

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?

Wrong — see below.

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 67% and the description adds no parameter meaning at all — it never mentions site, metric, expected, or tolerance_pct. The two most consequential params (expected and tolerance_pct) have no description in the schema either, so the verification-matching logic is undocumented in both places.

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 verb and resource: re-query Google to confirm a number. The example ('this page got 500 clicks') makes the intent concrete. It does not name the sibling it differs from (performance_query), so an agent must infer the distinction from the name alone.

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 gives a usage context — verify before presenting a number — but never says when not to use it or which alternative to call instead (e.g. performance_query for exploration). The trigger condition is implied rather than stated as a rule.

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

weekly_reportB

Full report in one call (performance, alerts, drops, quick wins, content gaps, decay, cannibalisation, sitemaps, indexing, robots.txt), saved as a Markdown file.

NameRequiredDescriptionDefault
daysNo
siteYesProperty: 'sc-domain:example.com', 'https://www.example.com/' or 'example.com'
top_nNo

TDQS

B3.3/5.0
Behavior3/5

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

The description usefully explains the anomaly of readOnlyHint=false for a reporting tool: it is 'saved as a Markdown file', so the agent understands the write is a local artifact, not a mutation of the site — this is real added value beyond the annotations. It does not disclose where the file lands, what the filename/path convention is, or whether an openWorldHint=true call of this breadth is slow or rate-limited, which are the traits an agent most needs here.

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 sentence, front-loaded with the payload ('Full report in one call') and followed by an enumerated section list. The parenthetical is long but every item earns its place by telling the agent what questions the report answers, and there is no filler.

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

Completeness4/5

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

For a broad aggregate tool with no output schema, the description is reasonably complete: the agent knows exactly which ten analyses come back and that the deliverable is a Markdown file. Missing pieces are where the file is saved, how to retrieve it later, and how 'days'/'top_n' shape the output, which keeps it below a 5.

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 only 33% — only 'site' is documented — and the description adds nothing about 'days' (the reporting window, 7–90, default 28) or 'top_n' (3–50, default 10). Given that 'top_n' clearly governs how many rows appear in each section and the description lists ten sections that will be truncated by it, this is a meaningful gap the description should have closed.

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 the resource ('full report') and enumerates its ten sections (performance, alerts, drops, quick wins, content gaps, decay, cannibalisation, sitemaps, indexing, robots.txt), which implicitly distinguishes it from the granular siblings like performance_query, check_alerts, and content_decay. The verb is only implied ('in one call ... saved as a Markdown file') rather than stated outright, and the tool never says what data source it operates on, 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?

'Full report in one call' hints that this is the aggregate alternative to calling many section tools individually, which is useful routing signal. However, there is no explicit 'use this when...' statement, no mention of when a narrower sibling like section_performance or find_opportunities would be preferable, and no cost/latency caveat for an agent deciding between one broad call and several focused ones.

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. 44 tool updatesv1.2.0
    • First observedcheck_alerts
    • First observedcheck_dns
    • First observedcheck_https
    • First observedcheck_redirects
    • First observedcompare_periods
    • First observedcontent_decay
    • First observedcore_web_vitals
    • First observedcrawl_stats
    • First observeddiagnose_url
    • First observedfind_cannibalization
    • First observedfind_opportunities
    • First observedget_sitemap
    • First observedimage_audit
    • First observedimport_access_logs
    • First observedindexing_changes
    • First observedindexing_fix_guide
    • First observedindexing_report
    • First observedinspect_url
    • First observedinspection_job
    • First observedlist_inspected_urls
    • First observedlist_properties
    • First observedlist_sitemaps
    • First observedmulti_site_dashboard
    • First observedpagespeed_audit
    • First observedperformance_overview
    • First observedperformance_query
    • First observedproperty_notes
    • First observedproperty_overview
    • First observedquery_segments
    • First observedqueue_from_performance
    • First observedqueue_from_sitemaps
    • First observedqueue_urls
    • First observedrobots_txt_check
    • First observedrobots_txt_check_property
    • First observedrobots_txt_diff
    • First observedrobots_txt_history
    • First observedrobots_txt_test
    • First observedrobots_txt_watch
    • First observedrun_inspections
    • First observedsection_performance
    • First observedserver_status
    • First observedtraffic_drops
    • First observedverify_metric
    • First observedweekly_report

TDQS

B3.1/5.0

Scored across 44 tools

Disambiguation4/5

Most tools occupy distinct slots: performance_query vs performance_overview vs compare_periods are clearly layered, and the robots_txt_* family separates check/history/diff/test/watch cleanly. A few clusters blur together — property_overview vs weekly_report vs multi_site_dashboard, and inspect_url vs diagnose_url vs run_inspections vs inspection_job — but the descriptions do enough to steer selection.

Naming Consistency4/5

Everything is snake_case with recognizable domain prefixes (robots_txt_*, queue_from_*, check_*, list_*, find_*) and no camelCase or style mixing. However, only about half the names follow the verb_noun pattern; many are bare nouns (server_status, content_decay, traffic_drops, cron_stats, image_audit), which weakens predictability.

Tool Count2/5

44 tools is a large surface for one server, and several are convenience wrappers over combinations of other tools (weekly_report, multi_site_dashboard, property_overview, verify_metric). While the domain genuinely spans performance, indexing, robots.txt, technical SEO and logs, the count pushes well past a comfortably scannable set.

Completeness4/5

Coverage is unusually thorough: performance analytics, indexing inspections, sitemaps, robots.txt lifecycle, redirects/DNS/HTTPS, CWV, log-based crawl stats, and persistent property notes. The notable gap is write operations on sitemaps (list/get only, no submit/delete) and no way to manage properties beyond reading them.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude to access Google Search Console data including search performance, URL indexation, sitemaps, and built-in SEO analysis tools such as trending queries, cannibalization detection, and traffic drop diagnostics.
    148 npm
    11
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    Enables Claude Code to read Google Search Console and GA4 data locally with read-only access, and provides combined SEO analysis tools for comparing datasets and identifying opportunities.
    20
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables users to query Google Search Console data interactively from Claude Desktop and via CLI, providing search analytics, period comparisons, branded split, indexing status, sitemaps, and full CSV exports.
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables Claude to query Google Search Console performance data, inspect URL indexing status, submit URLs via IndexNow, and check title and meta-description lengths against Bing limits directly in chat.
    6
    MIT