Skip to main content
Glama

Search Console MCP

PyPI Python 3.11+ Tools Providers Tests Publish License: MIT

Know what to fix to improve your search rankings, without becoming an SEO expert.

Ask Claude or Codex to analyze your site's latest SEO changes and suggest what to fix first. Search Console MCP gives your assistant the search metrics and page audits it needs to explain traffic drops, find ranking opportunities, and turn the findings into a prioritized action plan.

Search Console MCP is the open-source connection between your data and your AI assistant. The server retrieves metrics and runs analyses; Claude, Codex or another MCP client explains the findings and proposes corrections. A coding assistant with access to your repository can also help implement the fixes you choose.

The diagram covers the 96-tool MCP server. The repository also includes 15 shared Claude/Codex SEO playbooks and a separate opt-in bounded native audit prototype with nine source-review profiles. The post-1.5.0 recap and release-readiness record separates merged source features, published package contents and remaining quality checks.

What you get

Analyze my site's latest SEO changes. Explain what improved or declined, find opportunities to rank higher, and suggest the fixes I should make first.

Your AI assistant uses the connected tools to produce:

  • A diagnosis of recent changes: which pages and queries gained or lost clicks, impressions or positions, with evidence and possible explanations.

  • A prioritized list of opportunities: pages close to page one, search results getting impressions but few clicks, and competing pages targeting the same query.

  • Concrete suggested fixes: title and description changes, content briefs, internal-link improvements, and technical or indexing issues to investigate.

  • A follow-up comparison: rerun the analysis after making changes to see how clicks, impressions and positions evolved.

For example, if a page gets impressions but few clicks, the assistant can inspect its title and description and suggest a rewrite. If a page is close to page one, it can check its content and internal links before recommending changes. These are example workflows, not measured results for your site.

Initial account setup and review of suggested changes are still required. Recurring checks need a scheduler or automation in your client; the server does not run them on its own. Ranking improvements must be measured after the changes and are not guaranteed.

A real audit

See a real analysis of my Claude Code Ultimate Guide site, run on 2026-10-07 with 14 live MCP calls. It measured 459 clicks and 55,921 impressions over 28 days, investigated three pages and proposed actions tied to the observed data. The request/response trace shows the parameters, timestamps and selected results. These are analysis findings; no site correction or ranking gain has been measured from this run.

Related MCP server: mcp-seo-audit

What it covers

Need

Main capabilities

Search performance

Queries, pages, dates, search types, anomalies, quick wins and traffic drops

Google and Bing comparison

Side-by-side query or page metrics without merging incompatible position semantics

Site health

GSC, GA4, CrUX, schema and public-page signals with graceful degradation

Technical and content SEO

Metadata, headings, hreflang, internal links, structured data, preload and content quality

Indexing and feeds

Google indexing requests, sitemaps, IndexNow and guarded Bing URL or feed submissions

Automation

MCP tools, gsc-cli, Claude agents, reusable skills and machine-readable architecture docs

Choose your starting point

New to SEO? Start with a site assessment: understand what to analyze and why, get three first actions, and learn which metrics to follow. You can begin with public pages, then connect Google Search Console for search performance data. GA4 and Bing are optional.

Choose a workflow to get a prompt to copy, the data it needs and an illustrative result:

  • Start with SEO: assess your site, get three priorities and a measurement plan, with explanations in plain language.

  • Understand a traffic drop: compare periods with Google Search Console; optional GA4 adds visitor behavior.

  • Find ranking opportunities: use configured Google or Bing search metrics and inspect the relevant pages.

  • Check page visibility: audit public pages and use Google Search Console for indexing status; Bing can add crawl signals.

Replace the example site in the prompt with your own. Every copied prompt explicitly asks the assistant to use Search Console MCP, verify its tools and guide installation or Google setup if needed. It includes the installation guide, Google setup guide and the matching GitHub example. The prompts request analysis and recommendations without applying site changes.

Quick start

Start here

Goal

Command or guide

Result

Run the published package

uvx gsc-mcp-tools

Starts all 96 Google, Bing, GA4, CrUX, IndexNow and technical SEO tools over stdio

Install for Codex or Claude Desktop

Installation guide

Persistent executable, upgrades, client configuration and verification

Develop from the source checkout

Install from source

Editable install for unreleased changes and local development

Run the checkout bounded audit

Source workflow installation

Checkout environment, explicit request plan and optional native report generation

Configure Google access

Google setup guide

Service Account or OAuth access to the selected properties

Configure Bing access

Bing setup guide

One account-level key for the verified sites visible to that account

Run a first audit

Starter prompts

Full audit, health check, page inspection or GA4 analysis prompt

Use the shell instead of MCP

CLI usage

Commands generated from the source registry

Requirements

  • Python 3.11+

  • For Google tools: a Google Cloud project with the Search Console API, Web Search Indexing API and Google Analytics Data API enabled, plus a Service Account JSON key or OAuth Desktop credentials

  • For Bing tools: a Bing Webmaster Tools account, at least one verified site and a Bing Webmaster API key

Published package

Use the published package for the complete 96-tool registry, including Bing:

uvx gsc-mcp-tools

For a persistent MCP client, install the latest stable package once and configure the absolute executable path. This avoids keeping an extra uvx launcher process beside every running server:

uv tool install gsc-mcp-tools
command -v gsc-mcp-tools
gsc-cli list

Upgrade that installation when a new release is available:

uv tool upgrade gsc-mcp-tools

To reproduce this release exactly, use uv tool install --force gsc-mcp-tools==1.6.0. A version-pinned installation remains pinned; install a newer explicit version or reinstall without ==... before using uv tool upgrade.

Release 1.2.0 was built and published by GitHub Actions through PyPI Trusted Publishing. The workflow checks that the tag matches pyproject.toml, runs the full test suite, validates and smoke-tests the built wheel, then publishes that same artifact with a short-lived OIDC credential. See the GitHub release and PyPI files.

pip install gsc-mcp-tools

Configure the providers you use

Installation guide: docs/installation.md covers persistent and one-time installs, upgrades, Codex project scoping, Claude Desktop, provider variants and verification.

Provider setup: docs/google-setup.md covers Google credentials and GA4. docs/bing-setup.md covers the Bing Webmaster API key, verified sites and the separate IndexNow key.

First audit prompts: docs/starter-prompt.md contains ready-to-use prompts for Google, Bing, cross-engine comparison, single-page inspection, eligible Indexing API submissions and GA4 analysis.

Use only the variables required by the provider families you enable:

export GSC_SERVICE_ACCOUNT_PATH=/absolute/path/to/service-account.json
export GSC_SKIP_OAUTH=true
export GA4_PROPERTY_ID=123456789   # only needed for GA4 tools
# Load CRUX_API_KEY from your secret store for CrUX tools.
# Load BING_WEBMASTER_API_KEY from your secret store for Bing tools.
gsc-mcp

CRUX_API_KEY is a Google API key (not a service account) with the Chrome UX Report API enabled in your GCP Console. It is separate from GSC auth and only required for CrUX tools.

Claude Desktop

Install the latest stable package once with uv tool install gsc-mcp-tools, then copy the absolute path returned by command -v gsc-mcp-tools into the configuration:

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "gsc-mcp": {
      "command": "/absolute/path/to/gsc-mcp-tools",
      "env": {
        "GSC_SERVICE_ACCOUNT_PATH": "/absolute/path/to/service-account.json",
        "GSC_SKIP_OAUTH": "true"
      }
    }
  }
}

Remove credentials for tool families you do not use, then restart Claude Desktop. Saving the file does not restart the MCP process.

For local development, set command to the checkout's absolute executable path, for example /absolute/path/to/google-search-console-mcp/.venv/bin/gsc-mcp. Version 1.4.0 exposes 89 tools, including seo_change_impact, rewrite_fidelity_check, search_weekday_reference, crawl_import_preview and draft inputs for editorial_audit. Releases 1.3.0 and 1.3.1 contain 85 tools; version 1.2.0 contains 81.

Codex

Codex starts a dedicated stdio MCP server for each task that loads it. A declaration in the user-level ~/.codex/config.toml therefore applies to every project and can leave many legitimate server processes alive while tasks remain active. Running through uvx adds a launcher process to each server.

Install the package once:

uv tool install gsc-mcp-tools
command -v gsc-mcp-tools

Then add the server only to trusted projects that need search data by creating .codex/config.toml in the project root:

[mcp_servers.gsc-mcp]
command = "/absolute/path/to/gsc-mcp-tools"
startup_timeout_sec = 60

[mcp_servers.gsc-mcp.env]
GSC_SERVICE_ACCOUNT_PATH = "/absolute/path/to/service-account.json"
GSC_SKIP_OAUTH = "true"

Keep this file untracked when it contains credentials. Remove provider variables you do not use. Codex loads project .codex/config.toml only for trusted projects; project configuration and precedence are documented in the official Codex configuration guide.

Do not add a global single-instance lock to a stdio server. Each client owns a separate stdin/stdout channel, so blocking later instances would break concurrent tasks instead of sharing one server safely. A shared deployment would require the streamable HTTP transport and its own authentication boundary.

Select MCP tool families (since 1.3.1)

Since version 1.3.1, set GSC_MCP_TOOL_FAMILIES=analytics,seo,sitemaps,links in the MCP server environment to expose these families plus core. The default exposes all 96 tools in version 1.6.0. Restart the server or client after changing the selection; gsc-cli list keeps the full catalogue. Selection does not grant provider access or write permission. See the tool-family configuration for all family names and startup validation. Version 1.3.0 predates this setting.

Bing Webmaster API key

  1. Sign in to Bing Webmaster Tools and verify every site you want the account to access.

  2. Open the API access settings and generate an API key.

  3. Store the key in your secret manager or local environment as BING_WEBMASTER_API_KEY. Never pass it as a tool argument or commit it to a file.

  4. Call each Bing tool with its site argument, for example https://example.com/. One user-level key can access every verified site visible to that account.

The Bing Webmaster API key and the IndexNow key have different scopes:

  • Bing Webmaster API reads private account data and manages verified sites. The server reads its user-level key from BING_WEBMASTER_API_KEY.

  • IndexNow notifies participating engines about changed URLs. Its key must be verifiable on each target host or subdomain, and indexnow_submit currently receives that key as an explicit argument.

  • The Bing Webmaster Tools web interface exposes features that the public API does not. Full URL Inspection and AI Performance are not available through the public API used here.

Do not reuse the Bing Webmaster API key as an IndexNow key.

Multi-property support

To query a different GA4 property without changing the config, pass property_id directly to any GA4 or cross tool:

ga4_traffic_sources(property_id="987654321")
traffic_health_check(site="sc-domain:example.com", property_id="987654321")

Troubleshooting

uvx gsc-mcp-tools launches but no tools appear in Claude Desktop

Fully quit Claude Desktop (Cmd+Q) and reopen it. Saving the config file is not enough; the MCP process is only started on launch.

Codex keeps many gsc-mcp-tools processes alive

Check whether gsc-mcp is declared in user-level ~/.codex/config.toml. Move it to project-level .codex/config.toml when it is not needed in every task, and configure the executable installed by uv tool install instead of uvx. Restart Codex after changing the configuration; already-running tasks keep the server configuration they loaded at startup.

GSC_SERVICE_ACCOUNT_PATH is set but auth fails

Use an absolute path. Relative paths and ~/ tilde expansion are not resolved. Check with echo $GSC_SERVICE_ACCOUNT_PATH that the value is a full /Users/... path.

GA4 tools return "property_id required"

Either set GA4_PROPERTY_ID in your config env block, or pass property_id directly to the tool call. The env var is the default; the parameter overrides it per call.

crux_page_vitals or crux_history returns "CRUX_API_KEY not set"

CrUX tools require a separate Google API key (not the service account) with the Chrome UX Report API enabled. Create one in Google Cloud Console under Credentials, enable the API, then inject the key from your secret store into the server environment as CRUX_API_KEY.

Indexing API returns 403 on submit_url

The service account needs Owner-level access on the GSC property, not just Full access. Go to Search Console Settings > Users and permissions, find the service account email, and upgrade its role to Owner.

submit_batch quota warning at 180/200

The Indexing API default quota is 200 requests per day per GCP project. The tool warns at 180. To increase it, request a quota increase in Google Cloud Console under APIs & Services > Quotas.

The data behind the recommendations

Google Search Console and Bing Webmaster Tools show how people find your pages in search. Optional GA4 data adds what those visitors do on your site; CrUX and public-page audits help identify performance, content and technical issues. Your assistant can use these sources together to decide which pages need attention.

Version 1.6.0 exposes 96 FastMCP tools, including local log analysis, four crawl snapshot commands, inventory differences and an indexing evidence matrix. The server handles authentication, API calls, validation, retries and structured JSON output. Use a starter prompt to run your first analysis.

IMPORTANT

gsc-mcp-tools==1.2.0 is the first published version with Bing support. It includes 19 Bing tools, cross-engine comparison and Bing support in three SEO analyses.

NOTE

An API submission reported as accepted proves neither crawl nor indexation. Search Console MCP keeps observed facts, derived metrics and recommendations separate.

Why private search data needs MCP

Public web search cannot answer questions tied to private Search Console, Bing Webmaster Tools or GA4 properties. Search Console MCP lets an assistant analyse those measured values while preserving provider boundaries and uncertainty.

GSC data is private. No web search agent can read it.

Given "which of my pages are wasting impressions with zero clicks?", an AI without API access has two honest options: admit it cannot answer, or guess from publicly visible signals. Neither is a diagnosis.

With this server, Claude pulls the actual numbers: /projects/ at position 10.1 with 87 impressions and 0 clicks, CTR benchmark 2.3% at that rank. That is the concrete gap between "you should optimize your meta titles" (available from any AI with internet access) and "your /projects/ page has 87 impressions and 0 clicks, rewrite the title" (requires your numbers).

Some tasks work without private data: checking indexation with site:, parsing sitemap structure, reading robots.txt. For those, any web-capable agent gets you there. But for anything that requires private GSC metrics (traffic drops, striking-distance queries, CTR anomalies, Indexing API submissions), there is no substitute for API access.

The server also handles Google and Bing API mechanics: isolated credentials, bounded retries, same-origin checks for Bing writes, true HTTP batch for Google indexing requests, and structured JSON output across the source registry. The two providers keep distinct position semantics and expose uncertainty instead of forcing incomparable data into one claim.

How it works

flowchart TD
    C[Claude, Codex<br/>or another MCP client] --> S[FastMCP server]
    S --> R[Shared source registry<br/>96 tools]
    R --> A[Read and analysis tools]
    R --> W[Guarded write tools]
    A --> G[Google APIs<br/>GSC, GA4, CrUX]
    A --> B[Bing Webmaster API]
    A --> P[Public pages<br/>robots, sitemaps, HTML]
    A --> L[(Local drift baselines)]
    W --> V[Validate target, scope<br/>and explicit confirmation]
    V --> M[Google indexing and sitemaps<br/>Bing submissions and IndexNow]
    G --> O[Structured JSON<br/>facts, derived values and _meta]
    B --> O
    P --> O
    L --> O
    M --> O
    O --> C

Google and Bing share clicks, impressions and derived CTR where those fields exist. Provider-specific values remain separate, and cross-engine deltas appear only when both observed windows are exact and equal.

Evidence and safety

NOTE

Unavailable metrics are reported as unavailable. Unsupported Bing analyses return an explicit limitation, and Google and Bing positions stay separate. Cross-engine click and impression deltas are omitted unless both observed windows are exact and equal. Compare Google and Bing coverage.

Every tool returns structured JSON. The _meta block records diagnostics such as the provider and observed window where the tool can establish them. Search Console MCP does not turn an unavailable field into a negative result or merge Google and Bing ranking semantics into one number.

GA4 reports identify the effective property in _meta.sources.ga4.property, including when GA4_PROPERTY_ID supplies the default. Combined reports also retain the requested GSC property in _meta.sources.gsc.site. _meta.params preserves the original inputs, so an omitted property_id can remain null there while the resolved source is known. Missing child provenance remains null; the server does not infer a GA4-to-GSC site mapping. See the source identity contract.

Remote writes require the agent to identify the exact target and volume, read current state where available, and obtain explicit confirmation before calling the tool. The returned API status is reported without extrapolating crawl, indexation or ranking effects.

Search engine coverage

Analysis

Google

Bing

Raw query, page and date metrics

Supported

Supported within Bing's observed window

quick_wins

Supported

Supported with engine="bing" when position is present

seo_striking_distance

Supported

Supported with engine="bing" when position is present

prune_candidates

Supported

Supported with engine="bing"; indexation must be checked separately

traffic_drops, seo_lost_queries

Supported

Explicit refusal: exact period comparison unavailable

check_alerts, seo_cannibalization

Supported

Explicit refusal: bulk page-query dimension unavailable

Cross-engine query or page comparison

Supported through compare_search_engines

Deltas are omitted unless both observed windows are exact and equal

Bing keyword-research endpoints are not exposed. GetKeywordStats and GetRelatedKeywords returned HTTP 400 in the redacted live canary, so their contract remains UNKNOWN.

Submission workflow and confirmation

There are nine tools that mutate remote state: five existing tools (submit_url, submit_batch, submit_sitemap, sitemaps_delete, indexnow_submit) and four Bing tools (bing_url_submit, bing_urls_submit_batch, bing_feed_submit, bing_feed_remove). Before any call, the agent must read the current state, name the exact target and volume, obtain explicit confirmation, call the tool once, then report its returned status without extrapolation.

Use this sequence for search changes:

  1. Analyse measured data and state its observed window.

  2. Recommend a change, separating measured facts, derived metrics and recommendations.

  3. Correct the page or feed outside this MCP server.

  4. Submit only after explicit confirmation and same-origin validation.

  5. Verify the returned API status. An accepted request proves neither crawl nor indexation.

  6. Measure a later comparable window before attributing an effect.

Current Bing runtime limits are explicit: data freshness is unknown; quota integers are not known to represent totals or remaining capacity; non-empty crawl issues, nested backlink rows and RemoveFeed remain unverified against live production data. No Bing write was executed against a production site during validation. Batch URL submission is therefore refused before mutation. bing_url_info can report a last crawl date, but it cannot provide a complete public URL Inspection verdict.

Tools (98)

This source branch adds two experimental SerpApi tools to the released 96-tool surface. They default to offline preview/import; actual Google acquisitions require explicit enablement, a private key, a verified free plan and a request identifier. Two public desktop/mobile captures and local replay were verified; broader provider coverage and diagnostic quality remain unqualified. See the SerpApi setup and comparison guide. This change is not a package release.

Version 1.5.0 includes the bounded local crawl-log audit. Its validation record distinguishes declared bots and current registry membership from historical identity.

The versioned crawl inventory contract adds optional site-owned local storage, bounded detail pages, exact-URL reconciliation and explicit cleanup. Imported metadata and scores are not independently verified provider evidence.

Release gsc-mcp-tools==1.3.0 includes ga4_ai_referrals, editorial_audit, search_change_breakdown and link_targets_audit, field-level evidence methods, content-trust observations and comparison/challenge fixes. Version 1.3.1 retains 85 tools and adds optional MCP discovery selection, CLI JSON string lists, and the SEO/Bing feedback fixes described in the changelog. Version 1.4.0 has 89 tools, adding declared-change follow-up, draft/rewrite checks, weekday-reference and caller-supplied crawl previews described in bounded audit workflows and editorial workflows. Version 1.5.0 adds seven local evidence tools, richer traffic references and an opt-in extraction profile. Version 1.6.0 retains 96 tools, fixes missing comparison/indexing values and packages experimental audit/native APIs; runner scripts and workspace skills require the repository checkout. See the evidence and safety guide for availability, source matching and method limits.

Category

Tool

Description

Meta

get_capabilities

List all available tools

Experimental SERP

serpapi_search

Preview or explicitly capture one Google SERP on a verified free plan; durable attempt limits, no retries or paid fallback

Experimental SERP

serpapi_import_preview

Qualify caller-supplied Google SERP JSON offline; retain missing fields and producer feature types

Properties

list_properties

List all GSC properties

Properties

get_site_details

Get details for a specific property

Analytics

get_search_analytics

Query search performance data

Analytics

get_performance_overview

Aggregate totals + top queries

Analytics

search_change_breakdown

Compare explicit equal Google windows with independent bounded page/query/country/device views, coverage and residuals

Analytics

search_weekday_reference

Default since 1.4.0: disjoint Google windows aligned by weekday and ending by Pacific J-3. Version 1.5.0 adds optional annual/robust references and mixed/undetermined results; descriptive, no causal attribution

Analytics

compare_search_periods

Compare two consecutive periods

Analytics

get_search_by_page_query

Performance broken down by page and query

Analytics

get_advanced_search_analytics

Flexible query with custom dimensions and filters

Analytics

analytics_anomalies

Z-score anomaly detection on daily clicks

Analytics

discover_performance

Top pages by impressions in Google Discover

Analytics

news_performance

Top pages by impressions in Google News

Analytics

search_type_breakdown

Clicks and impressions split across web, Discover, News, image, video

Analytics

ai_overviews_impact

Generic Web search appearances; AI exposure unverified, explicit 400/403 limits

SEO

quick_wins

Pages in positions 4-15 with CTR below benchmark

SEO

traffic_drops

Declining clicks with metric-based candidate diagnoses, not causal proof

SEO

check_alerts

Traffic concentration risks and ranking opportunities

SEO

seo_striking_distance

Queries in positions 8-15, one push away from page 1

SEO

seo_cannibalization

Queries split across pages (HHI score); search operators excluded by default since 1.3.1

SEO

seo_lost_queries

Queries with a click drop >= 80% vs the previous period

Inspection

inspect_url

URL indexing status via URL Inspection API

Inspection

batch_url_inspection

Inspect up to 10 URLs at once

Inspection

check_indexing_issues

Inspect URLs and categorize by issue type

Indexing

submit_url

Request indexing for a single URL

Indexing

submit_batch

Request indexing for multiple URLs (true HTTP batch)

Sitemaps

list_sitemaps

List submitted sitemaps

Sitemaps

submit_sitemap

Submit a sitemap URL

Sitemaps

sitemaps_get

Fetch details for a single sitemap

Sitemaps

sitemaps_delete

Delete a submitted sitemap (with safety check)

Sitemaps

sitemap_audit

Fetch a sitemap and compare its URLs with 90 days of Search Analytics page rows; does not measure indexation

GA4

ga4_organic_landing_pages

Sessions and engagement for organic landing pages

GA4

ga4_traffic_sources

Sessions and conversions by channel, source and medium

GA4

ga4_ai_referrals

Recorded assistant-attributed visits, exact source rules and coverage-gated shares

GA4

ga4_page_performance

7 metrics per page path, optional CONTAINS filter

GA4

ga4_realtime

Active users right now by screen, country and device

GA4

ga4_user_behavior

Device, country and user-type breakdowns in one batch call

GA4

ga4_conversion_funnel

Converting pages and event counts, optional event filter

GA4

ga4_funnel

Multi-step funnel report via GA4 v1alpha RunFunnelReport, conversion rate per step

Cross

traffic_health_check

Equal requested dates, zero/empty/unavailable states and coverage-gated heuristic ratios

Cross

page_analysis

GSC+GA4 join per page with opportunity score, sorted by priority

Cross

page_health_score

Composite 0-100 score (GSC 30 pts, GA4 25 pts, CrUX 25 pts, schema 20 pts), graceful degradation per component

Cross

content_brief

Per-page top queries, question queries, and GA4 session data for content planning

CrUX

crux_page_vitals

Real-user Core Web Vitals (LCP, INP, CLS, FCP, TTFB) for a URL from the Chrome UX Report API

CrUX

crux_history

Historical Core Web Vitals trend (weekly data points) for a URL

Technical

schema_validate

Fetch any public URL and validate its JSON-LD schemas; suggests missing schemas by URL pattern

Technical

crawl_log_audit

Since 1.5.0: bounded local common/combined logs, masked paths/IPs, declared bots and optional current Google IP membership; no indexing inference

Local inventories

crawl_snapshot_import / crawl_snapshot_read / crawl_snapshot_join / crawl_snapshot_delete

Optional site-owned SiteOne storage, bounded details, exact-URL reconciliation and explicit cleanup

Local comparisons

crawl_diff

Exact observed inventory membership and compatible imported field differences; no deletion/indexing inference

Inspection evidence

indexing_evidence_matrix

Keep supplied per-URL inspection, HTML, GSC, inventory and log observations separate with unknown current indexing

Technical

crawl_import_preview

Since 1.4.0: preview bounded caller-supplied SiteOne JSON in memory; no crawl, file/network access, secrets or GSC join

Technical

schema_generate

Generate a Schema.org JSON-LD block for Reservation, OrderAction, DiscussionForumPosting, or ProfilePage

Drift

drift_baseline

Capture a baseline snapshot of a page (title, H1-H3, schema, canonical, CWV) stored locally in SQLite

Drift

drift_compare

Diff a live fetch against the stored baseline and apply 17 rules (8 CRITICAL, 6 WARNING, 3 INFO)

Drift

drift_history

List previous comparison runs for a URL with triggered findings per run

Editorial

editorial_audit

FR/EN house-style warnings, localized excerpts and faithful rewrite guidance; caller plain/Markdown drafts since 1.4.0 with native source spans and bounded parsing; no AI-authorship score

Editorial

rewrite_fidelity_check

Since 1.4.0: protected literals and qualifier review candidates; semantic fidelity and factual truth remain unassessed

Follow-up

seo_change_impact

Since 1.4.0: declared event and descriptive Google before/after evidence; no persistence or causal effect

Content

content_quality

Fetch a URL for local filler, density, repetition and thin-content heuristics; optional main-content profile requires independent evaluation

Content

hreflang_audit

Fetch a URL and validate its hreflang implementation: x-default, ISO 639-1 codes, region codes, self-ref, protocol consistency

Content

page_technical_audit

Fetch a URL and audit meta tags (title, description, canonical, robots), viewport, HTML lang, security headers, robots.txt Googlebot access

Content

preload_audit

Audit Speculation Rules, bfcache eligibility, and LCP preload signals: inline speculationrules blocks, Speculation-Rules header, link preload tags, deprecated prerender, cache-control blockers

CrUX

crux_lcp_subparts

Decompose LCP into four subparts (TTFB, resource load delay, duration, render delay) with dominant phase identification for targeted CWV remediation

Indexing

indexnow_submit

Submit URLs to IndexNow (Bing, Yandex, Seznam, Naver) via one POST; SSRF-safe URL validation, skipped-invalid count, ok/partial/error verdict

SEO

parasite_risk

Scan URL paths for parasite SEO patterns matching Google's 2024-11-19 site-reputation policy: sponsored/affiliate sections, Forbes Advisor, CNN Underscored patterns, affiliate query params

Technical

ai_visibility_audit

Check robots.txt and llms.txt; version 1.3.1 checks 10 agents, including ClaudeBot, Claude-User and Claude-SearchBot

Technical

gbp_deprecation_lint

Scan a page for deprecated Google Business Profile features: .business.site links, Reserve with Google, GBP appointment widgets

Technical

pagespeed_audit

Run a PageSpeed Insights API v5 audit: Lighthouse performance score, Core Web Vitals, top 3 improvement opportunities (requires GOOGLE_API_KEY)

Content

heading_audit

Audit heading structure: H1 uniqueness, level jumps (H2 to H4), title vs H1 word-for-word duplication, headings carrying no information, words per H2

Links

link_targets_audit

Observe bounded internal destination HTTP statuses and redirect hops while preserving source anchors; no recursive crawl

Links

internal_links_audit

Audit a page's internal links weighted by zone (body, nav, footer, header, aside): targets linked only from footer/nav, generic and empty anchors, internal nofollow, self-links

Links

link_equity_map

Crawl the top pages by impressions, build the internal link graph, cross it with GSC: pages at position 11-20 with no body inbound link, orphan candidates, footer-only targets, hubs

SEO

prune_candidates

Classify pages by measured traffic (has_traffic, impressions_no_clicks, low_impressions, zero_impressions) before any pruning call; a page with clicks is never a candidate

Bing read

bing_sites_list

List sites visible to the Bing account and their observed verified state

Bing read

bing_query_stats

Query performance in Bing's observed rolling window

Bing read

bing_page_stats

Page performance in Bing's observed rolling window

Bing read

bing_page_query_stats

Query performance for one page

Bing read

bing_rank_traffic_stats

Daily clicks and impressions; no rank field is inferred

Bing read

bing_crawl_stats

Dated crawl counters in the requested local window

Bing read

bing_crawl_issues

Crawl issue flags; non-empty live item shape remains unverified

Bing read

bing_crawl_settings_get

Observed crawl-rate setting from the partial contract

Bing read

bing_url_info

Observed URL fields and last crawl date, without an indexation verdict

Bing read

bing_url_traffic

URL clicks, impressions and derived CTR

Bing read

bing_feeds_list

List registered Bing feeds

Bing read

bing_feed_details

Return every observed feed-detail row

Bing read

bing_url_submission_quota

Return quota integers with total-versus-remaining semantics marked unknown

Bing read

bing_link_counts

Backlink count page; nested runtime shape remains unverified

Bing read

bing_url_links

Backlinks for one URL; nested runtime shape remains unverified

Bing write

bing_url_submit

Submit one same-origin URL; acceptance does not prove indexation

Bing write

bing_urls_submit_batch

Validate a batch, then refuse it while quota semantics remain unknown

Bing write

bing_feed_submit

Submit one same-origin feed without claiming crawl or indexation

Bing write

bing_feed_remove

Remove a registered same-origin feed after explicit confirm=true; runtime contract unverified

Cross-engine

compare_search_engines

Compare query or page metrics; deltas require equal exact observed windows and positions stay side by side

CLI usage

After installation, gsc-cli is available as a standalone shell command. It derives its commands from the same registry as the MCP server. Version 1.6.0 retains the 96 commands from 1.5.0. Version 1.4.0 has 89 commands, up from 85 in releases 1.3.0 and 1.3.1, adding seo_change_impact, rewrite_fidelity_check, search_weekday_reference and crawl_import_preview. Draft inputs extend editorial_audit without adding a command. Version 1.2.0 has 81 commands. MCP family selection does not restrict CLI commands.

# List the commands in the installed build
gsc-cli list

# Run Google or Bing tools with flags
gsc-cli get-search-analytics --site https://example.com/ --days 28
gsc-cli bing-query-stats --site https://example.com/ --days 28 --limit 100

Bing from the CLI

# Load BING_WEBMASTER_API_KEY from your local secret store before this command.
gsc-cli bing-sites-list
gsc-cli bing-query-stats --site https://example.com/ --days 28 --limit 100
gsc-cli compare-search-engines \
  --google-site sc-domain:example.com \
  --bing-site https://example.com/ \
  --days 28 \
  --dimension query

BING_WEBMASTER_API_KEY is process configuration. It never appears in the CLI flags, tool parameters, result metadata or sanitized Bing errors.

# Run another registered tool
gsc-cli get-performance-overview --site https://example.com/

# Multi-value flags for list parameters
gsc-cli batch-url-inspection \
  --urls https://example.com/page-1/ \
  --urls https://example.com/page-2/ \
  --site https://example.com/

# GA4 funnel with a JSON steps array
gsc-cli ga4-funnel \
  --steps '[{"name":"Visit","event":"page_view"},{"name":"Convert","event":"purchase"}]' \
  --start-date 28daysAgo \
  --end-date today

# Keep the _meta diagnostic block in output
gsc-cli list-properties --meta

# Pipe to jq
gsc-cli get-search-analytics --site https://example.com/ | jq '.rows[:5]'

String-list flags also accept a JSON array of strings:

gsc-cli batch-url-inspection --site https://example.com/ \
  --urls '["https://example.com/page-1/","https://example.com/page-2/"]'

Repeat the flag or use a JSON array; commas are literal URL characters, not separators. For example, --urls 'https://example.com/a,b?q=x,y' supplies one URL. Malformed arrays and non-string entries are rejected before a provider call. JSON string-list support is available since 1.3.1; repeated flags also work in release 1.3.0.

Set GSC_SERVICE_ACCOUNT_PATH for non-interactive use (same as the MCP server). To cache OAuth credentials interactively, run:

gsc-cli auth login --allow-browser

Exit codes: 0 success, 1 Google API error, 2 credential/config error or invalid arguments.

Quota note: submit-batch and submit-url use the Google Indexing API (200 req/day limit). Each gsc-cli call starts a fresh process, so cross-invocation quota tracking is not implemented. The @with_retry decorator still catches 429s, but the in-process counter resets every call.

Agents and shared SEO skills

The repository ships 13 Claude Code agents, 15 shared SEO skills, one Claude development skill and 2 development commands. The nine SEO workflow agents below each reference a focused skill. A read-only evidence reviewer keeps its findings beside the unapproved draft; three additional specialist agents cover Python implementation, pytest and security review. The controlled workflow pilot records that interactive workflow's bounded checks.

The optional bounded native source workflow uses experimental APIs packaged in 1.6.0 and a checkout runner with nine narrower source-review profiles, immutable acquired observations and durable provider, tool and native-attempt ceilings. Both installed native CLI hosts completed an offline source case; this does not establish authenticated provider acquisition, full interactive playbooks or expert report quality. Current output-limit validation bounds each stdout/stderr stream and regular-file writes to at most 2,000,000 bytes on Linux/macOS, preserves lower inherited file limits and cleans up ordinary process-group descendants. The file ceiling can affect host state; it is not an aggregate disk quota or host memory limit. Version 1.6.0 packages the Python APIs; runner scripts and shared workspace skills still require the repository checkout. No new console command is installed.

The live GSC pilot record describes authenticated acquisition, private storage, explicit windows and identical source projections reviewed by Claude/Codex. This source-only pilot does not validate interactive playbooks or human quality. A Google-only configuration does not require a Bing site.

The initial native client playbook trials record explicit skill loading and MCP replay calls in both clients. Eleven of twelve retained controlled cases passed after targeted instruction retests; the Claude missing-traffic case still overstated an explanation. The separate C1 follow-up adds an insufficient-evidence branch and eight retained cases passing the frozen C1 criteria, including a positive arithmetic control. These verdicts do not establish whole-report accuracy, automatic routing, new provider acquisition or human SEO quality.

Agents

Agent

Skill

When to use

gsc-seo-reporter

seo-weekly-report

Weekly traffic recap, period-over-period summary

gsc-traffic-doctor

traffic-drop-diagnosis

Sudden or sustained drop in clicks or impressions

gsc-content-optimizer

content-opportunities

Observed content optimization candidates; no predicted gains

gsc-cannibalization-checker

cannibalization-check

Multiple pages competing for the same query

gsc-indexing-auditor

indexing-audit

Crawl errors, pages not indexed, coverage gaps

gsc-sitemap-auditor

sitemap-audit

Sitemap submission and sampled search visibility

gsc-schema-auditor

schema-audit

JSON-LD local required-field checks; eligibility unassessed

gsc-page-analyst

page-deep-dive

Full diagnostic for a single URL

gsc-ai-overviews-analyst

ai-overviews-impact

Generic search appearances with unavailable/unverified AI exposure

To use an agent from Claude Code, ask naturally ("why did traffic drop?") or invoke it by name. Each agent loads its skill at runtime and returns a structured answer, not a narration of what it did.

Skills

SEO skills have one canonical source in .agents/skills/, discovered by Codex and projected into .claude/skills/ for Claude. Each contains supported calls, evidence limits and shared FR/EN routing cases. Use them directly or through the Claude agents. Shared-playbook validation records discovery and routing checks; the separate native source runner does not execute these interactive playbooks or establish human SEO accuracy.

Skill

Command

When to use

seo-weekly-report

/seo-weekly-report

Weekly traffic recap, period-over-period summary

traffic-drop-diagnosis

/traffic-drop-diagnosis

Sudden or sustained drop in clicks or impressions

content-opportunities

/content-opportunities

Observed content optimization candidates; no predicted gains

cannibalization-check

/cannibalization-check

Multiple pages competing for the same query

indexing-audit

/indexing-audit

Crawl errors, pages not indexed, coverage gaps

sitemap-audit

/sitemap-audit

Sitemap submission and sampled search visibility

schema-audit

/schema-audit

JSON-LD local required-field checks; eligibility unassessed

page-deep-dive

/page-deep-dive

Full diagnostic for a single URL

ai-overviews-impact

/ai-overviews-impact

Inspect generic Web search appearances without AI attribution

heading-audit

/heading-audit

Heading hierarchy, H1 uniqueness, title overlap and section density

internal-linking-audit

/internal-linking-audit

Link placement by page zone, anchors and footer-only targets

link-equity-map

/link-equity-map

Site-wide link flow crossed with Search Console positions

onpage-audit

/onpage-audit

One-page audit combining technical, content, link, schema and search data

crawl-import

/crawl-import

Versioned SiteOne inventories, exact-URL joins and explicit local retention

crawl-log-audit

/crawl-log-audit

Bounded local server access logs, HTTP status and declared bot evidence

python-clean-code

/python-clean-code

Review a module for clean code violations before PR

add-tool

/add-tool

Step-by-step workflow to add a new MCP tool

run-tests

/run-tests

Run the pytest suite with automatic failure diagnosis

Documentation

Need

Document

Install, upgrade and configure an MCP client

Installation guide

Configure Google APIs and authentication

Google setup guide

Configure Bing Webmaster Tools

Bing setup guide

Run the first audit

Starter prompts and examples/

Compare search changes, follow a declared edit and check link destinations

Bounded audit workflows

Review a draft or compare a proposed rewrite

Editorial workflows

Understand the modules and data flow

Architecture

Run the optional source-only native audit

Bounded native source workflow

Compare extraction profiles offline

Extraction profiles and labeled-snippet benchmark

Supply independent human cases and frozen targets

Expert evaluation intake and query evaluation contract

Review delivered source limits and remaining inputs

Delegated validation, 2026-10-10 and remaining action plan

Review Bing evidence and runtime limits

Bing API contract

Verify SEO expert feedback fixes and catalogue measurements

Feedback validation record

Review local audit validation and its evidence limits

Audit validation records

Review product designs and implementation plans

Product design records

Track releases and current changes

Changelog

Navigate the public site and review dated updates

HTML sitemap, what’s new and website maintenance

Give the repository to an AI assistant

Machine-readable project index

The docs/machine-readable/ directory contains structured architecture docs designed to give any AI agent (Claude, Cursor, Copilot...) an accurate picture of the project without reading the full codebase:

  • Editorial audit and rewrite profile: scoped FR/EN warnings and instructions for preserving meaning during rewrites.

  • llms.txt: quick reference covering all 96 source tools, module map, security rules, test patterns, and a decision tree for common tasks

  • adr-index.yaml: 16 Architecture Decision Records reconstructed from git history

  • code-map.yaml: full module/test/dependency map

  • constraints.yaml: forbidden patterns (no stdlib XML on external input, no pickle for tokens, no unvalidated URLs in sitemap fetch...) and required patterns

  • tech-decisions.yaml: stack decisions by domain (auth, retry, output contract, packaging...)

Load llms.txt via your AI context or reference it in your CLAUDE.md with @docs/machine-readable/llms.txt.

Development

The classifier evaluation guide and human intake worksheet specify independent labels, family-disjoint splits and targets frozen before tuning. Equal declared annotator/reviewer identifiers are rejected; distinct strings do not authenticate humans. The extraction benchmark compares hash-checked local HTML using labeled inclusion/omission snippets. Its release quality remains UNKNOWN, synthetic results are ineligible for adoption and downstream warnings are not_measured. See the remaining action plan for task-specific inputs.

Source checkout for development

git clone https://github.com/FlorianBruniaux/google-search-console-mcp
cd google-search-console-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
gsc-cli list

The final command reads the shared registry and lists the 98 commands available in this source branch. Use this installation when developing or testing unreleased changes; the native audit and evaluation scripts add no public MCP tool or CLI command.

For client executable paths and the distinction between repository skills, Claude Desktop and native source-review profiles, follow the source workflow installation instructions. The Python APIs are packaged in 1.6.0; runner scripts and workspace skills require the checkout. See the 1.6.0 release validation.

Run the tests

pip install -e ".[dev]"
pytest tests/ -v

The C1 follow-up consolidated on 11 October 2026 records 2,081 Python tests passing with the optional content package installed, plus 113 local browser tests. This is the recorded dev/content run, not a base-package test count. Provider calls use mocks; controlled inputs do not establish live provider access or expert SEO accuracy. Earlier subprocess and extraction checks retain their own 10 October validation record.

Project origins

Why this implementation exists

Two projects shaped the approach here. AminForou/mcp-gsc (Python, 1k+ stars) has strong search analytics and handles OAuth and Service Account auth cleanly, but does not include the Google Indexing API at all. Suganthan-Mohanadasan/Suganthans-GSC-MCP (Node.js) adds the Indexing API but implements submit_batch as a sequential loop with a 100ms delay between requests, not a real HTTP batch, and mixes plain-text and JSON outputs with no retry logic.

This project takes the auth and SEO patterns from the first, the Indexing API scope from the second, and closes the gaps in both. Python was the natural choice: google-api-python-client ships service.new_batch_http_request() natively, which makes true HTTP multipart batching possible without reimplementing the wire format by hand.

Feature

AminForou/mcp-gsc

Suganthan

gsc-mcp

Google Indexing API

No

Yes (fake batch)

Yes (true HTTP batch)

submit_batch

N/A

Sequential loop

new_batch_http_request(), 100/chunk

Token storage

pickle

pickle

JSON (creds.to_json())

Retry on 429/5xx

No

No

Yes, exponential backoff

Quota tracking

No

No

Yes, warns at 180/200

Output format

Mixed text+JSON

Mixed

100% JSON + _meta block

Credits

This project took inspiration from claude-seo (MIT, agricidaniel). Four components were adapted:

  • SSRF protection (src/gsc_mcp/url_safety.py): the URL safety module with DNS-rebinding mitigation, IPv4 obfuscation normalization, and multi-cloud metadata endpoint blocklist, ported from requests to httpx.

  • JSON-LD generators (schema_generate tool): the four high-leverage schema types (Reservation, OrderAction, DiscussionForumPosting, ProfilePage) adapted from scripts/schema_generate.py.

  • Schema templates (src/gsc_mcp/data/schema_templates.json): 11 JSON-LD placeholder templates (VideoObject, ProductGroup, ItemList, Certification, etc.) from schema/templates.json.

  • SEO drift monitoring (src/gsc_mcp/tools/drift.py): the 17-rule diff methodology from scripts/drift_baseline.py and scripts/drift_compare.py, credited to Dan Colta in the original CONTRIBUTORS.md.

Assets with incompatible licenses (CC BY-SA 4.0, CC BY 4.0) were excluded. See NOTICE for full attribution.

Explore the ecosystem

These projects extend the workflow without duplicating this tool:

  • Research with yt-insights: connect corpus building to post-publication performance measurement.

  • Learn with Claude Code Ultimate Guide: frame MCP choice, permissions, and research workflows.

Browse the complete open-source galaxy

License

MIT

Available Tools

81 tools
ai_overviews_impactA

Get queries where AI Overview appearance data is available.

Uses the searchAppearance dimension with dataState=all to capture AI Overview impressions. Returns an error dict when the property does not support this dimension (HTTP 400/403) instead of raising.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses error handling behavior (returns error dict on HTTP 400/403 instead of raising) and the specific dimension used. This adds useful behavioral context beyond what annotations would provide, though it does not mention read-only nature or side effects.

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

Conciseness5/5

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

The description is three sentences, front-loading the purpose, then adding technical detail and error handling. Every sentence adds value with no waste. It is efficiently structured for quick agent scanning.

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?

While the description covers the tool's purpose, technical approach, and error behavior, it lacks critical parameter details and does not mention the output structure (though an output schema exists). Given the tool's moderate complexity (3 params, 1 required) and no annotations, more completeness would be beneficial.

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%, yet the description provides no explanations for the three parameters (days, site, limit). The agent must infer meaning from parameter names alone, which is insufficient. Baseline for no param info is low, and the description fails to compensate.

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

Purpose5/5

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

The description clearly states the tool's function: 'Get queries where AI Overview appearance data is available.' It specifies a unique resource (AI Overview data) and uses a specific verb. Among siblings, none target AI Overviews, making it easily distinguishable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description explains the technical approach (searchAppearance dimension, dataState=all) but does not provide explicit guidance on when to use this tool vs. alternatives like get_search_analytics. The context of siblings implies it is for AI Overview-specific data, but no direct usage boundaries are given.

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

ai_visibility_auditA

Check robots.txt AI crawler access and llms.txt presence for a URL's origin.

Fetches {origin}/robots.txt and checks each known AI crawler agent. Also checks for {origin}/llms.txt (Model Context Protocol discoverability file). No authentication required.

Verdicts: open (all AI crawlers allowed) | partial (some blocked) | closed (all blocked or disallow all) | fetch_error.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and usefully states 'No authentication required', describes fetching robots.txt and checking each known AI crawler agent, and lists verdicts including fetch_error. It does not disclose rate limits, caching, or redirect behavior, but the core behavioral profile is well communicated.

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

Conciseness5/5

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

The description is front-loaded with the core action, then supplies necessary execution details and a compact verdict legend. Every sentence earns its place with no redundant or vague language.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the description covers what is fetched, authentication requirements, and verdict meanings. It is nearly complete, though explicit usage guidance relative to sibling tools would improve it further.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It clarifies that the url parameter is used to derive an origin by specifying 'for a URL's origin' and showing that only {origin}/robots.txt and {origin}/llms.txt are fetched, which is the key semantic distinction for this single required parameter.

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: checks robots.txt AI crawler access and llms.txt presence for a URL's origin. It clearly distinguishes itself from siblings like ai_overviews_impact by focusing on crawler access files rather than AI Overview performance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies usage by stating the exact audit it performs, but it does not name alternative tools, when to prefer them, or when not to use this tool. Context is clear enough for a specialized audit, yet explicit routing guidance is absent.

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

analytics_anomaliesA

Detect days with statistically abnormal click volumes using z-score analysis.

A day is flagged as a spike or drop when abs(z_score) > threshold (default 2.5). Returns mean_daily_clicks, std_daily_clicks, and the list of anomalous days with their z-score. Use days=90 or more for meaningful baseline statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes
thresholdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Describes the z-score algorithm, threshold default, and return values. Adequately explains what the tool computes without hiding side effects (none apparent). Could be more explicit about read-only nature, but acceptable.

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

Conciseness5/5

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

Three concise sentences, front-loaded with purpose, method, and output. No redundant information.

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

Completeness4/5

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

Given an output schema exists (not shown), description adds expected return fields. Explains algorithm and parameters well enough for a statistical tool. Lacks mention of pagination or limits, but not critical for this use case.

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%, but description adds context for 'days' (baseline size) and 'threshold' (z-score cutoff). However, 'site' parameter is not explained. Partially compensates for missing schema descriptions.

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?

Clearly states it detects statistically abnormal click days using z-score analysis. Specifies criterion (abs(z_score) > threshold) and outputs. However, does not explicitly differentiate from sibling tools like traffic_drops or check_alerts, though the method is distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

Provides guidance on parameter usage ('Use days=90 or more for meaningful baseline statistics') but does not specify when to use this tool versus alternatives like check_alerts or traffic_drops. No 'when not to use' guidance.

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

batch_url_inspectionA

Inspect up to 10 URLs at once in GSC. Returns the same fields as inspect_url for each URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYes
urlsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes a read operation ('inspect', 'returns fields') but does not elaborate on side effects, rate limits, or what happens on invalid input. It references 'inspect_url' behavior, which adds some context but insufficiently covers all behavioral traits.

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

Conciseness5/5

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

Two sentences with no extraneous information. Every word serves a purpose; highly efficient.

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

Completeness4/5

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

Output schema exists, so return value documentation is handled. The description covers the tool's purpose and relationship to 'inspect_url'. However, it could briefly note error handling for individual URLs in the batch or prerequisites (e.g., site must be verified). Still, it is mostly sufficient for a simple batch wrapper.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds a constraint on the 'urls' parameter ('up to 10') and implies 'site' is a GSC property, but does not describe the format or range of values. Some meaning is added beyond the schema, but not thoroughly.

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?

Clearly states 'inspect up to 10 URLs at once in GSC', specifying a specific verb, resource, and scope. Distinguishes itself from the sibling 'inspect_url' by implying batch vs single URL inspection.

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?

Implies when to use (multiple URLs) but does not explicitly state when not to use (e.g., for single URL use inspect_url) or provide alternative tools. The description is adequate but lacks explicit guidance.

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

bing_crawl_issuesC

Decode Bing crawl issue flags using the synthetic-fixture contract.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. 'Decode' weakly implies a read operation, but there is no statement about safety, permissions, rate limits, mutation risk, or what the synthetic-fixture contract entails.

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

Conciseness2/5

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

It is a single sentence with no wasted words, but it is cryptic rather than self-contained. The sentence does not earn its place because the key term 'synthetic-fixture contract' remains unexplained.

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

Completeness1/5

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

For a two-parameter tool with no annotations and no parameter descriptions, the definition is completely inadequate. It does not explain what flags are returned, how the contract works, or how to interpret the required site input.

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

Parameters1/5

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

Schema description coverage is 0% for both parameters (site, limit), and the description adds no meaning about what 'site' expects or what 'limit' controls. The description fails to compensate for the absent schema documentation.

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?

States a verb (Decode) and resource (Bing crawl issue flags), which distinguishes it from siblings like bing_crawl_stats and bing_crawl_settings_get. However, the phrase 'synthetic-fixture contract' is opaque jargon that does not clarify what the tool actually does or what 'flags' are decoded.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as bing_crawl_stats or bing_url_info. No context, prerequisites, or exclusions are provided.

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

bing_crawl_settings_getC

Return only Bing's observed crawl-rate value from the partial contract.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses only that the return is narrowed to a single value; it says nothing about permissions, whether the value can be absent, or what 'partial contract' implies about data completeness.

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 or redundancy. It is efficient, though the trailing 'partial contract' clause costs clarity rather than adding it.

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

Completeness2/5

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

An output schema exists, so return structure needn't be explained, but the lone parameter is undocumented and there is no usage context for a tool embedded in a dense Bing/SEO toolset. The definition is too thin for the agent to invoke confidently.

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

Parameters2/5

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

Schema description coverage is 0% and the sole required parameter, 'site', is never mentioned in the description. The description does not compensate for the undocumented parameter, so the agent gets no signal about what 'site' should contain.

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: return Bing's observed crawl-rate value. The word 'only' distinguishes it from broader crawl tools like bing_crawl_stats or bing_crawl_issues. However, the phrase 'from the partial contract' is unexplained jargon that muddies what the tool actually reads from.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No when-to-use guidance is given, and no alternative is named despite many adjacent siblings (bing_crawl_stats, bing_crawl_issues, bing_url_info). An agent must guess whether this narrow getter or a broader crawl tool is appropriate.

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

bing_crawl_statsC

Return dated Bing crawl counts inside the requested local window.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It implies a read-only lookup but says nothing about auth requirements, rate limits, date granularity, or whether the window is measured from today or from a fixed crawl date. For a stats tool with zero annotation coverage this is a notable 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?

A single front-loaded sentence with no filler. It is efficient, though the phrase 'dated ... local window' is slightly ambiguous for such a short string.

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

Completeness2/5

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

An output schema exists so return values need not be explained, but with 0% parameter coverage and no annotations, the definition leaves the agent without enough information about the required 'site' argument or what the days window means. For a 2-parameter tool that is a meaningful omission.

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 neither 'site' nor 'days' is documented anywhere. The description hints that 'days' defines the window via 'local window' but does not clarify the format of 'site' (domain vs. URL vs. verified property) or whether days is inclusive. It does not compensate for the documentation gap.

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

Purpose4/5

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

States a specific verb (Return) and resource (Bing crawl counts) and scopes it to a dated local window, which distinguishes it from sibling stats tools like bing_query_stats or bing_page_stats. However, it never explicitly contrasts itself with the neighboring Bing crawl tools (bing_crawl_issues, bing_crawl_settings_get), 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 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 mention of prerequisites (e.g., site must be a verified Bing property), and no routing to alternatives such as bing_crawl_issues for problem diagnosis. The agent must guess the context in which crawl counts matter.

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

bing_feed_detailsC

Return every Bing feed-detail row from the observed list response.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYes
feed_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden, but it only says 'Return,' implying a read. It does not disclose auth needs, rate limits, whether data is live or cached, pagination behavior, or any safety profile for a tool requiring site and feed_url.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no filler. Its brevity is appropriate, though the vague wording limits usefulness rather than conciseness.

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

Completeness2/5

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

An output schema exists, so return values need not be explained. However, with no annotations and 0% parameter description coverage, the description omits the role of the required site/feed_url inputs and any usage context, making it inadequate for correct invocation.

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

Parameters1/5

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

Schema description coverage is 0% for two required parameters, and the description never mentions site or feed_url. It adds no meaning beyond the bare parameter names, leaving the agent without guidance on what values to supply.

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 uses a specific verb 'Return' and resource 'Bing feed-detail row,' but the phrase 'observed list response' is opaque and does not clearly distinguish this from sibling bing_feeds_list or explain what the detail rows contain. An agent gets only a partial sense of purpose without any mention of site or feed_url.

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 alternatives named, and no prerequisites. The phrase 'observed list response' faintly implies this follows a list call, but the usage context remains implicit and unstated.

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

bing_feed_removeB

Remove a registered same-origin feed only after explicit confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYes
confirmNo
feed_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It correctly signals a destructive removal operation and a confirmation requirement, but does not state permissions needed, reversibility, or what happens if confirmation is absent.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word contributes to the purpose and the confirmation condition.

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 destructive mutation tool with no annotations and 0% parameter description coverage, the definition is too sparse. Although an output schema exists and return values need not be explained, the description still omits authentication needs, side effects, and parameter semantics.

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

Parameters2/5

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

Schema description coverage is 0% for three parameters. The description only implies the 'confirm' behavior and mentions a feed, but provides no meaning for 'site' or 'feed_url', so it does not compensate for the missing schema documentation.

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

Purpose4/5

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

The description states a specific verb and resource: removing a registered feed, with the scope narrowed to same-origin feeds. It is distinguishable from sibling bing_feeds_list and bing_feed_details by the destructive action, though it does not explicitly name those alternatives.

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 says removal should happen 'only after explicit confirmation,' which is a usage condition, but it gives no explicit when-to-use guidance relative to sibling tools like bing_feeds_list or bing_feed_details. The context is implied rather than stated.

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

bing_feeds_listC

Return Bing feeds with only the observed, non-indexation fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It hints at field selection ('observed, non-indexation fields') but never defines what that excludes or why, and gives no auth, rate-limit, or pagination context.

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

Conciseness3/5

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

It is a single short sentence, which is efficient, but the opaque 'observed, non-indexation fields' clause consumes the only content slot without conveying actionable meaning.

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

Completeness3/5

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

An output schema exists, so return values need not be described. Still, for a 1-param tool with zero schema coverage and no annotations, the description is too thin to guide correct invocation.

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

Parameters2/5

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

The single required 'site' parameter has 0% schema description coverage, so the description must compensate and does not. It adds no meaning about what 'site' should contain or how it is identified.

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?

States a clear verb+resource ('Return Bing feeds'), so the basic operation is identifiable. However, the qualifier 'only the observed, non-indexation fields' is unexplained jargon and does not distinguish it from the sibling bing_feed_details, leaving the actual scope ambiguous.

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 statement of when to use this versus the closely related bing_feed_details, bing_feed_submit, or bing_feed_remove. The agent must infer that this is the listing counterpart purely from the name.

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

bing_feed_submitA

Submit one same-origin feed to Bing without claiming indexation.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYes
feed_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses that the operation does not claim indexation, but omits permissions/auth requirements, rate limits, and what happens on duplicate submissions.

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 wasted words; scope and the key caveat are both present immediately.

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

Completeness3/5

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

An output schema exists, so return values need not be described. However, with zero annotation coverage and 0% schema description coverage, the description leaves auth, failure modes, and parameter formats unaddressed for a write operation.

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

Parameters3/5

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

Schema description coverage is 0% across two params. The phrase 'same-origin feed' implies feed_url must share the origin of site, which adds some meaning beyond the bare 'site'/'feed_url' property names, but neither parameter's format is explained.

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 (Submit) and resource (feed to Bing), and the qualifier 'same-origin' narrows scope meaningfully. It is distinguishable from siblings like bing_feed_remove and bing_url_submit, though it never names them directly.

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?

'Submit one same-origin feed' implies usage constraints (single feed, same-origin) but gives no explicit when-to-use guidance or named alternatives such as bing_url_submit or submit_sitemap. The agent must infer the routing.

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

bing_page_query_statsC

Return Bing query performance for one requested page.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
pageYes
siteYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about authentication requirements, rate limits, data freshness/lag, or behavior when no query data exists for the page. The only behavioral signal is the single-page scope, which is minimal for an 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.

Conciseness3/5

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

It is a single front-loaded sentence with no filler or redundancy, which is structurally clean. The terseness, however, is under-specification rather than discipline, so it does not reach the top of the scale.

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

Completeness2/5

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

An output schema exists, so return values need not be described. But with no annotations, 0% parameter coverage, and no usage or prerequisite context, the definition is too thin for a 4-parameter external-API tool whose siblings overlap heavily.

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

Parameters2/5

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

Schema description coverage is 0% across 4 parameters. The description only loosely implies the page parameter ("one requested page") and site via "Bing"; days and limit (both with defaults of 30 and 1000) are undocumented in either the schema or the description, leaving the agent guessing at their meaning.

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

Purpose3/5

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

The description states a verb ("Return") and a resource (Bing query performance) scoped to "one requested page," which is more than a restatement of the name. However, "query performance" is left undefined (impressions? clicks? CTR? position?), and it does not distinguish this tool from close siblings like bing_page_stats or bing_query_stats.

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 prerequisites (e.g., the site must be verified in Bing Webmaster Tools), and no named alternative. The phrase "one requested page" implies a single-page scope but never tells the agent when to prefer bing_query_stats or bing_page_stats instead.

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

bing_page_statsC

Return Bing page performance, normalizing Bing's Query field to page.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the page-normalization behavior, but says nothing about auth requirements, rate limits, default window behavior, pagination, or how the 'Query to page' rollup affects returned rows. For a stats tool with zero annotation coverage this is a significant 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?

A single, front-loaded sentence with no filler. It is efficient, though arguably too terse for a tool with three undocumented parameters and no annotations.

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

Completeness2/5

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

An output schema exists, so return values need not be explained. However, for a stats tool with no annotations, 0% parameter coverage, and no usage routing, the description leaves the agent without enough to select it confidently over the several Bing/analytics siblings.

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

Parameters2/5

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

Schema description coverage is 0% across three parameters (site, days, limit), and the description adds no meaning for any of them. It never clarifies what 'site' format is expected, that 'days' is the lookback window, or what 'limit' caps. The intuitive parameter names are the only guide, so the description fails to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource ('Return Bing page performance') and adds a scoping note ('normalizing Bing's Query field to page') that implicitly distinguishes it from bing_query_stats and bing_page_query_stats. The purpose is clear, though it does not name the sibling alternatives explicitly and never says which metrics 'performance' includes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No when-to-use guidance and no alternatives named. The agent must infer from the phrase 'normalizing ... to page' that this is the page-level aggregation tool versus bing_query_stats or bing_page_query_stats. No prerequisites or exclusions are stated.

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

bing_query_statsC

Return Bing query performance filtered to the requested rolling window.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It hints that results are scoped to a 'rolling window,' but says nothing about required auth/permissions, how the window is computed, rate limits, or whether results are paginated — a large gap for a zero-annotation tool.

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

Conciseness4/5

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

A single tight sentence with no filler, and the key scoping concept (rolling window) is front-loaded. It is efficient, though its brevity comes partly from omission rather than precision.

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

Completeness2/5

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

An output schema exists, so return values need not be described. But with no annotations and 0% parameter coverage, the description leaves the meaning of 'site' and 'limit' and the tool's relationship to sibling Bing stats tools unexplained, so the agent lacks enough to invoke it confidently.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for all three parameters. 'Rolling window' loosely maps to the 'days' parameter, but 'site' and 'limit' receive no explanation of format, required-ness, or effect on results.

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 ('Return') and resource ('Bing query performance'), so the agent knows this is a read/report tool. However, it gives no differentiation from the many nearby siblings such as bing_page_query_stats, bing_page_stats, and bing_rank_traffic_stats, leaving the agent to guess which Bing stats tool applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

There is no when-to-use, when-not-to-use, or alternative-tool guidance. The mention of a 'rolling window' implies time-based reporting but does not tell the agent when this tool is preferable to the other Bing stats siblings.

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

bing_rank_traffic_statsC

Return Bing daily clicks and impressions without inventing rank fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It hints at an output-honesty constraint ('without inventing rank fields') but omits auth requirements, the scope/granularity of the daily aggregation, and any rate or data-freshness behavior for a mutation-free but underspecified tool.

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

Conciseness4/5

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

A single compact sentence with the core action front-loaded. It is tightly sized, though the trailing clause about rank fields is cryptic and consumes space that better parameter or usage guidance could have used.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but with zero annotations, 0% schema description coverage, and no usage routing, the definition leaves an agent unable to distinguish this tool from its numerous Bing-stats siblings.

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

Parameters2/5

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

Schema description coverage is 0% for two parameters. The word 'daily' loosely gestures at the 'days' parameter and 'Bing' gestures at 'site', but the description never explains the site value format or the window semantics, 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?

States a specific verb and resource: 'Return Bing daily clicks and impressions.' An agent can grasp the core purpose, though it never differentiates itself from close siblings such as bing_page_stats, bing_query_stats, or bing_url_traffic, so the boundary 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 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 prerequisites, and no named alternative among the many competing Bing stats tools. The only operative instruction is a negative warning ('without inventing rank fields'), which does not tell the agent when this tool is the right choice.

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

bing_sites_listB

Return verified-state summaries for sites visible to the Bing account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With zero annotations, the description carries the full behavioral burden. 'Return' implies a read, and 'verified-state' hints at the payload's verification field, but there is no mention of auth requirements, rate limits, pagination, or account-scoping behavior. Given no annotations, this is a significant 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?

A single front-loaded sentence with no wasted words. 'verified-state summaries' is slightly jargon-heavy but the statement stays tight and purposeful.

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

Completeness4/5

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

An output schema exists, so return-value documentation is unnecessary, and with no parameters the call surface is trivial. The description is nearly sufficient for such a simple enumeration tool, missing only usage/routing context.

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 compensate for; the baseline for a 0-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?

States a specific verb (return) and resource (sites), with scope qualifiers 'verified-state summaries' and 'visible to the Bing account'. It is distinguishable from siblings like get_site_details (single site) and list_properties (different provider), 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 Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no named alternatives. The agent must infer that this is the entry-point enumeration tool from the name alone; the description adds no routing logic relative to siblings such as list_properties or get_site_details.

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

bing_url_infoC

Return only fields observed from Bing URL info, without indexation claims.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
siteYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior3/5

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

No annotations are present, so the description carries the burden, but it is short. It does disclose one genuine behavioral trait: results are limited to observed fields and make no indexation claims, which usefully signals the tool's epistemic limits. It says nothing about authentication, rate limits, or data freshness, and the presence of an output schema offloads return-value disclosure.

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 or repetition. It is efficient, though its brevity reflects under-specification rather than tight editing of rich content.

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 two-required-parameter tool with 0% schema coverage, no annotations, and many closely related Bing siblings, the description is too thin. The output schema excuses it from explaining return values, but it still lacks parameter meaning, usage routing, and any operational context.

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

Parameters2/5

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

Schema description coverage is 0% and both required parameters (site, url) are undocumented in the schema. The description adds no meaning about what "site" is (hostname, property, Bing site ID?) or how it differs from "url", leaving a real gap the description was expected to fill.

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

Purpose2/5

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

"Return only fields observed from Bing URL info" largely restates the tool name (bing_url_info) rather than defining a distinct capability. The only added information is a negative caveat ("without indexation claims"), which is a scope limitation, not a purpose statement. It does not distinguish this tool from close siblings like bing_url_traffic, bing_url_links, or inspect_url.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No when-to-use guidance, prerequisites, or named alternatives are provided. The phrase "without indexation claims" faintly implies a use case (raw observed data rather than an indexing verdict), but the agent is left to infer this and cannot tell when to pick this over the many other Bing/URL inspection tools.

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

bing_urls_submit_batchD

Preflight a Bing URL batch and refuse while quota semantics are unknown.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYes
urlsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It adds one behavioral fact—the tool may refuse when quota semantics are unknown—but omits what preflight checks, whether URLs are actually submitted, side effects, permissions, and error behavior.

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

Conciseness2/5

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

The single sentence is brief but structurally under-specified; it front-loads 'Preflight a Bing URL batch' but then trails into an unclear refusal clause. It is not verbose, but the wording does not earn its place because it fails to orient the agent.

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

Completeness1/5

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

With no annotations, no parameter descriptions, and only a cryptic one-line description, the definition is not complete for a submission/batch tool. Although an output schema exists and need not be explained, the input contract and the tool's actual behavior remain undocumented.

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

Parameters1/5

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

Schema description coverage is 0% and the description provides no meaning for 'site' or 'urls'. It does not explain the expected URL format, whether 'site' is a Bing property identifier, or any constraints on the batch, leaving both required parameters undocumented.

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

Purpose2/5

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

The description names a resource ('Bing URL batch') but its stated purpose is ambiguous: 'preflight' and 'refuse' do not match the tool name 'submit_batch' and leave unclear whether the tool submits URLs or only blocks submission. It does not distinguish this tool from siblings like bing_url_submit, submit_batch, or bing_url_submission_quota.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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

There is no guidance on when to use this tool versus alternatives. The phrase 'while quota semantics are unknown' hints at a refusal condition but does not tell an agent when the tool should be called, what prerequisites are needed, or which sibling to use instead.

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

bing_url_submission_quotaC

Return Bing quota integers without claiming total or remaining semantics.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does add one genuinely useful behavioral caveat: the returned integers should not be interpreted as total or remaining values, which warns the agent away from a common misreading. However, it says nothing about auth requirements, rate limits, or freshness of the quota data.

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

Conciseness3/5

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

One short sentence with no padding, which is appropriately sized for a simple read. But the phrasing ('without claiming total or remaining semantics') is cryptic and spends its only clause on a negative disclaimer rather than a positive statement of behavior.

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

Completeness2/5

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

An output schema exists, so return-value explanation is not required, but the description still omits the parameter meaning and any usage context. For a tool whose whole value is a quota check, an agent is left guessing what 'site' must contain and when the call is warranted.

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

Parameters2/5

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

Schema description coverage is 0% and the single required parameter 'site' is never mentioned in the description. The description does not clarify whether 'site' is a domain, a verified property identifier, or a Bing site ID, so it fails to compensate for the schema gap.

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

Purpose3/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 (return Bing quota) but is oddly framed around what it does not claim rather than what it does. An agent can infer this reports URL submission quota, but it never says whose quota or that it is scoped to the given site, and it does not differentiate from siblings like bing_url_submit or bing_urls_submit_batch.

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 indication of when an agent should check quota before submitting, and no mention of the obvious alternatives (bing_url_submit, bing_urls_submit_batch, bing_feed_submit). The description gives no routing context at all.

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

bing_url_submitB

Submit one same-origin URL to Bing without claiming indexation.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
siteYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it discloses one genuinely useful non-obvious fact: submission does not guarantee or assert indexation. However, it omits quota/rate-limit behavior (a sibling, bing_url_submission_quota, implies quota exists), whether site ownership/verification is required, and what happens on rejection.

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 filler; the scope qualifier and the indexation caveat are both packed in without wasted 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?

An output schema exists so return values need not be described, but for a submission (write) tool with zero annotation coverage and 0% parameter documentation, the definition leaves too much open: no auth/verification requirement, no quota expectation, and undefined 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?

Schema description coverage is 0% for both required parameters, so the description must compensate. 'Same-origin URL' and 'site' together imply the URL must belong to the site's origin, which is a meaningful constraint, but neither parameter is defined (format, whether site is a domain vs. a verified property, whether URL must be absolute).

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 ('Submit one ... URL to Bing') and the 'one' framing distinguishes it from the batch siblings like bing_urls_submit_batch and submit_batch. It also pins a scope constraint ('same-origin'). It stops short of naming the alternative tools, but an agent can still tell what it does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance, and none of the competing submission paths (bing_urls_submit_batch, indexnow_submit, submit_sitemap, bing_feed_submit) are referenced. The 'without claiming indexation' caveat hints at expectations but does not route the agent between tools.

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

bing_url_trafficC

Return observed URL traffic and derived CTR without rank fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
siteYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations, so the description carries the full behavioral burden. It implies a read ('observed traffic') but never states read-only status, auth requirements, or what 'observed traffic' actually measures (impressions vs. clicks) or the CTR derivation window. Only 'derived CTR' adds any behavioral signal.

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 or repetition. It is efficient, though its brevity is partly under-specification rather than true conciseness.

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

Completeness2/5

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

An output schema exists, so return values need not be explained. But with no annotations, zero parameter documentation, and no usage routing against the many bing_* siblings, the definition leaves too much unspecified for an agent to invoke it confidently.

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?

Two required parameters ('site', 'url') at 0% schema description coverage, and the description says nothing about either — no expected format, no site/url relationship. With no compensation in the description, the agent cannot tell what values are valid.

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 ('Return') and resource ('observed URL traffic and derived CTR'), and the clause 'without rank fields' implicitly distinguishes it from the rank-bearing sibling bing_rank_traffic_stats. It is clear what it returns, though it doesn't state what the tool 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 Guidelines2/5

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

No when-to-use guidance and no named alternatives. 'Without rank fields' hints at a contrast with bing_rank_traffic_stats / bing_page_stats but never says which sibling to pick or under what condition, leaving the agent to infer routing 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.

check_alertsB

Scan for structural SEO risks: traffic concentration and high-impression low-rank pages.

Flags 'traffic_concentration' (severity: high) when a single query drives more than 50% of all clicks (fragility indicator) and 'high_impression_low_rank' (severity: medium) when a page gets more than 5000 impressions at position > 10 (content optimisation opportunity).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes
engineNogoogle

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full disclosure burden. It does reveal meaningful behavioral detail — the 50%-of-clicks and >5000-impressions-at-position->10 thresholds plus severity levels — but says nothing about read-only vs mutating nature, permissions, or rate limits.

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?

Front-loaded with the one-line purpose, then two tightly-worded clauses that each define an alert and its trigger. No filler sentences and every clause carries information.

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

Completeness3/5

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

An output schema exists, so return format needn't be described, and the alert logic is well covered. However, for a three-parameter tool with no schema descriptions, the complete silence on parameters leaves a real gap for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0% and the description never references any of the three parameters (site, days, engine). With the schema supplying no semantics, the description should compensate but does not, leaving 'days' and 'engine' entirely undefined.

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 ('Scan') and resource ('structural SEO risks') and enumerates exactly the two alert types produced with their thresholds. It is clear what the tool does, though it does not explicitly contrast itself with close siblings like traffic_health_check or analytics_anomalies.

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 and no mention of alternatives, despite several overlapping siblings (traffic_health_check, analytics_anomalies, traffic_drops, seo_striking_distance). The agent must infer when this scan is preferable to those.

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

check_indexing_issuesA

Inspect up to 10 URLs and return only those with indexing problems, plus a summary count by category.

Categories: indexed, not_indexed, robots_blocked, fetch_error, canonical_issue, unknown. Use batch_url_inspection if you need results for all URLs regardless of status.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYes
urlsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose meaningful behavior: a hard 10-URL cap, that non-problem URLs are suppressed from results, and the full category taxonomy returned. It does not say what happens if more than 10 URLs are supplied (error vs truncation), nor any auth or rate-limit context.

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

Conciseness5/5

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

Two tight sentences plus a category enumeration, front-loaded with the tool's behavior before the alternative. Every element (cap, filter, categories, alternative) 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?

An output schema exists, so return-value detail is not required, and the description still summarizes the response shape. The gaps are the undocumented 'site' parameter and undefined behavior when the URL list exceeds the stated cap, which matter for a two-parameter tool with no annotations.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for both parameters. It adds the 10-URL ceiling for 'urls', but says nothing about 'site' — its expected format, whether it is a domain or a search-console property, or how it scopes the inspection — leaving a required parameter undocumented everywhere.

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 (inspect URLs for indexing issues), the scope cap (up to 10), and the filtering behavior (return only problem URLs plus a category summary). It also names the sibling it is not (batch_url_inspection), so an agent can distinguish the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

Explicitly states when to use this tool (you only want URLs with indexing problems) and names the alternative with its selecting condition (batch_url_inspection if you need all URLs regardless of status). No inference required.

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

compare_search_enginesB

Compare Google and Bing query or page metrics without inferring causality.

Click and impression deltas are returned only when both providers expose the same exact observed window. Positions remain side by side because the two providers use different position semantics.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
limitNo
bing_siteYes
dimensionNoquery
google_siteYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses important constraints: deltas only appear when both providers expose the same exact observed window, and positions remain side-by-side due to different provider semantics. It does not address permissions, rate limits, or read-only nature, but the key comparability caveats are surfaced.

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

Conciseness5/5

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

The description is tightly written: one sentence for purpose, one for delta behavior, one for position semantics. It is front-loaded with the core action and contains no filler.

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

Completeness3/5

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

An output schema exists, so return values need not be explained. The description adds meaningful comparison caveats, but it leaves all input parameter semantics undocumented and provides no usage context. For a 5-parameter tool with 0% schema description coverage and no annotations, this is only minimally complete.

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

Parameters2/5

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

Schema description coverage is 0% across 5 parameters. The description vaguely hints at the dimension values by saying 'query or page metrics,' but it does not name or explain google_site, bing_site, days, limit, or dimension. With no parameter descriptions in the schema, the description fails to compensate.

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: comparing Google and Bing query or page metrics. It is clear enough to distinguish from most sibling tools like compare_search_periods, but it does not explicitly name any alternative or sibling to differentiate from.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description gives a caution about causality and comparability but does not say when to use this tool versus alternatives such as bing_query_stats, bing_page_stats, or get_search_analytics. No prerequisites, exclusions, or routing guidance are provided.

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

compare_search_periodsA

Compare two consecutive equal-length windows and report delta in clicks and impressions.

Period B is the most recent days days (with a 3-day lag). Period A is the days days immediately before that. Useful for week-over-week or month-over-month trends.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It reveals a 3-day lag and explains the period definitions. It does not mention authentication or permissions, but the read-only nature is implied.

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

Conciseness5/5

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

The description is extremely concise: three sentences, front-loaded with the main purpose, and every sentence adds value without redundancy.

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

Completeness4/5

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

Given the output schema exists and the tool is simple, the description adequately explains the comparison logic, lag, and use case. Minor edge cases are not covered.

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

Parameters3/5

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

Schema description coverage is 0%. The description explains the 'days' parameter in context (e.g., 7 for weekly trends) but does not mention the 'site' parameter, leaving partial coverage.

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

Purpose5/5

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

The description clearly states the tool compares two consecutive equal-length windows and reports delta in clicks and impressions, which distinguishes it from sibling analytics tools that provide raw data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description explicitly states it is useful for week-over-week or month-over-month trends, providing context for when to use it. However, it does not list alternatives or when not to use it.

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

content_briefA

Gather SEO content intelligence for a single page: top queries, question queries, and GA4 engagement.

Step 1 — GSC: fetches search analytics with dimensions ["query", "page"], filters rows to the target page (via _normalize_url), sorts by clicks descending, and returns the top 20.

Step 2 — GA4: calls ga4_page_performance for the same page to get active_users and engagement_rate. Wrapped in try/except RuntimeError; returns None if GA4 credentials are missing or the property is not configured.

Question classification: queries whose first word (lowercased) is one of who/what/when/where/why/how.

Useful for brief-writing, content refreshes, and intent analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes
page_urlYes
property_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description must carry the burden. It reveals key behaviors: URL normalization, top-20 sorting, GA4 error handling, and question classification. However, it omits details like rate limits, auth requirements, or behavior on missing pages.

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

Conciseness4/5

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

The description is relatively concise and well-structured with clear steps. However, it includes implementation details (e.g., _normalize_url, try/except) that could be condensed without losing clarity.

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

Completeness3/5

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

Given the tool's moderate complexity (combining GSC and GA4) and the existence of an output schema (which relieves the need to describe return values), the description provides a reasonable overview. It lacks specifics on parameter input formats and edge case handling.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It mentions the four parameters (days, site, page_url, property_id) and hints at URL normalization, but does not explain formats, allowed values, or constraints beyond defaults.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Gather SEO content intelligence for a single page: top queries, question queries, and GA4 engagement.' It specifies the output components and distinguishes from sibling tools that focus on raw search analytics or GA4 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?

The description mentions usefulness for 'brief-writing, content refreshes, and intent analysis' and outlines steps, but does not explicitly state when to avoid this tool or compare it to alternatives like get_search_analytics or ga4_page_performance.

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

content_qualityA

Analyse page content quality against Google QRG signals (E-E-A-T heuristics).

Fetches the URL, extracts visible text, then scores against thin content, filler language, information density (named entities + numbers per token), and bigram repetition. No Google API calls. No authentication required.

Filler phrase list adapted from claude-seo (agricidaniel, MIT). Verdicts: good | needs_work | thin_content | fetch_error.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does substantial work: it discloses the fetch-and-extract pipeline (network egress to an arbitrary URL), the absence of auth/Google API dependency, and the scoring internals. Listing the verdicts including 'fetch_error' also surfaces the failure mode. It stops short of stating rate limits, timeouts, or behavior on paywalled/JS-rendered pages.

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

Conciseness4/5

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

Front-loaded with the one-line purpose, then progressively finer detail, which is good structure. The filler-phrase attribution line ('adapted from claude-seo (agricidaniel, MIT)') is provenance noise that doesn't help an agent decide or invoke, keeping this just under full marks.

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

Completeness4/5

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

An output schema exists, so the description needn't explain return values, yet it still volunteers the verdict enum as useful context. With only one input parameter and no annotations, the definition covers what an agent needs to invoke it correctly; only fetch-failure and timing behavior remain unaddressed.

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

Parameters3/5

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

Schema description coverage is 0% for the single 'url' parameter, so the description must add meaning — 'Fetches the URL, extracts visible text' usefully implies this must be a live, fetchable page URL rather than an ID or path. That is helpful but thin; it gives no format hints (scheme, trailing slash, canonicalization) or whether redirects are followed.

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

Purpose5/5

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

The description names a specific verb and resource (analyse page content quality) and enumerates the exact scoring signals — thin content, filler language, information density, bigram repetition — under a stated framework (Google QRG / E-E-A-T). This is sharply distinct from siblings like content_brief, heading_audit, or page_technical_audit, so an agent can route correctly even without an explicit sibling callout.

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 (you run this on a live page to grade content quality), and the 'No Google API calls. No authentication required.' line pre-empts a common prerequisite question. However, it never states when to prefer this over content_brief or how it relates to the other audit tools, and there are no explicit exclusions or preconditions beyond the URL.

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

crux_historyA

Fetch 40 weeks of Core Web Vitals history for a URL from the CrUX History API.

form_factor: "ALL_FORM_FACTORS" | "PHONE" | "DESKTOP" | "TABLET" metric: one of largest_contentful_paint | interaction_to_next_paint | cumulative_layout_shift | first_contentful_paint | experimental_time_to_first_byte Returns p75 per weekly collection period, oldest to newest. Requires CRUX_API_KEY environment variable.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
metricNolargest_contentful_paint
form_factorNoALL_FORM_FACTORS

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses the return format (p75 per week, oldest to newest), the metrics available, and the API key requirement. However, it does not mention rate limits, error handling, or behavior for URLs with no data.

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

Conciseness5/5

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

The description is concise with three focused sentences. The first sentence states the core purpose, the second details parameter options, and the third mentions return format and requirement. No redundant information.

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

Completeness5/5

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

The description covers the key aspects: what data is returned (p75 per week), the parameters, and the environment variable requirement. An output schema exists but is not shown; the description provides sufficient context for an agent to use the tool correctly.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. It explains form_factor options (ALL_FORM_FACTORS, PHONE, DESKTOP, TABLET) and lists metric values explicitly. The url parameter is not described beyond being a string, but the overall parameter meaning is clear from the tool's purpose.

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

Purpose5/5

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

The description clearly states 'Fetch 40 weeks of Core Web Vitals history for a URL from the CrUX History API.' It specifies the action (fetch), the resource (Core Web Vitals history), and the scope (40 weeks), distinguishing it from siblings like crux_page_vitals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description explains parameter options (form_factor, metric) and the required environment variable CRUX_API_KEY. However, it does not explicitly state when to use this tool instead of alternatives such as crux_page_vitals or other analytics tools.

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

crux_lcp_subpartsA

Decompose LCP into its four subparts via the CrUX API for actionable performance diagnosis.

Returns p75 values for TTFB, resource load delay, resource load duration, and element render delay, plus the dominant phase (the subpart with the highest p75 ms). Knowing which phase dominates turns "LCP is 4.2s" into a specific fix (server, preload, image size, or render-blocking resources).

form_factor: "PHONE" (default) | "DESKTOP" | "TABLET" | "ALL_FORM_FACTORS" Requires CRUX_API_KEY environment variable. Verdicts: good | needs_improvement | poor | not_enough_data | missing_key | fetch_error. Adapted from claude-seo lcp_subparts.py (agricidaniel, MIT).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
form_factorNoPHONE

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden; it discloses the CRUX_API_KEY requirement and enumerates outcome states (good/needs_improvement/poor/not_enough_data/missing_key/fetch_error), which warns the agent about auth and data-availability failures. It does not cover rate limits or latency, so it is strong but not exhaustive.

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

Conciseness4/5

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

Front-loaded with purpose and return values, then the parameter and environment details. The trailing attribution line ('Adapted from claude-seo lcp_subparts.py') is minor noise but the body sentences each earn their place.

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

Completeness5/5

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

An output schema exists, yet the description still tells the agent what comes back (four p75 subparts plus dominant phase) and the verdict states, plus the credential requirement. Nothing needed to call it correctly is missing.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It fully enumerates the form_factor values and default, which the schema does not, though it adds nothing about the url parameter (self-evident, but the schema is bare).

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 (decompose) and resource (LCP subparts) with the mechanism (CrUX API) and outcome (four named subparts). It is clearly distinguishable from siblings like crux_page_vitals and crux_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Explains the diagnostic context clearly — turning an aggregate LCP number into a specific phase to fix. It does not explicitly name alternate tools (crux_page_vitals, pagespeed_audit, preload_audit) or state when to prefer them, so it stops short of full routing guidance.

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

crux_page_vitalsA

Fetch current Core Web Vitals (LCP, INP, CLS, FCP, TTFB) for a URL from the CrUX API.

form_factor: "ALL_FORM_FACTORS" | "PHONE" | "DESKTOP" | "TABLET" Returns p75 percentile and a good/needs_improvement/poor rating per metric. If the URL has insufficient data (<1000 real users over 28 days), returns verdict=not_enough_data. Requires CRUX_API_KEY environment variable (Google API key with Chrome UX Report API enabled).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
form_factorNoALL_FORM_FACTORS

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It reveals that it requires a CRUX_API_KEY environment variable, returns p75 percentile and ratings, and handles insufficient data with a 'not_enough_data' verdict. It lacks mention of read-only nature, rate limits, or error handling, but covers the essential behavior.

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

Conciseness5/5

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

The description is concise and well-structured, leading with the core purpose, then detailing return format, edge cases, and prerequisites. Every sentence adds information without redundancy.

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

Completeness4/5

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

The description covers the tool's purpose, parameters, return format (p75 and ratings), edge case (insufficient data), and prerequisite (API key). With an output schema present, the lack of detailed return structure explanation is acceptable. Minor omissions like rate limits or error codes prevent a perfect score.

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?

Since schema description coverage is 0%, the description compensates by specifying the allowed values for form_factor ('ALL_FORM_FACTORS' | 'PHONE' | 'DESKTOP' | 'TABLET') and noting that url is required. It could further clarify the expected URL format (e.g., fully qualified), but adds significant value beyond the bare 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?

The description clearly states it fetches current Core Web Vitals (LCP, INP, CLS, FCP, TTFB) for a URL from the CrUX API, establishing a specific verb and resource. However, it does not explicitly distinguish itself from the sibling tool 'crux_history,' which likely provides historical data, missing an opportunity for differentiation.

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 provides no guidance on when to use this tool versus alternatives like 'crux_history' or other analytics tools. It does not mention when not to use it or any prerequisites beyond an API key, failing to help the agent choose appropriately.

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

discover_performanceA

Get Discover performance: top pages by impressions (Discover does not support query dimension).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses the basic purpose but does not mention whether the tool is read-only, any permission requirements, rate limits, or pagination behavior. The 'limit' parameter suggests paginated results but is not explained.

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

Conciseness5/5

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

The description is a single sentence that is efficient and front-loaded, providing the essential purpose without any unnecessary words.

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 tool has an output schema (not shown) so return values are covered. However, with three parameters and no annotations, the description should at least explain the parameters. Given the simplicity and presence of output schema, the description is minimally complete but leaves gaps in parameter understanding for an agent.

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

Parameters2/5

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

The description adds no information about the three parameters (days, site, limit). The schema has 0% description coverage, and the parameter names are only titled; the description does not explain their meaning, default values, or allowed formats. For an AI agent, this lack of guidance could lead to incorrect usage.

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

Purpose5/5

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

The description clearly states the tool retrieves Discover performance data (top pages by impressions) and explicitly notes that Discover does not support the query dimension, distinguishing it from search analytics tools. This gives a specific verb+resource and differentiates from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description implies the use case is for Discover performance reporting. The note about the query dimension indirectly suggests not to use this tool for query-based analysis, which would be handled by tools like get_search_analytics. However, it does not explicitly state when to use this tool over others or provide alternatives.

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

drift_baselineA

Capture an SEO baseline snapshot for a URL.

Fetches the page, extracts critical SEO signals (title, meta tags, canonical, headings, JSON-LD, OpenGraph), and stores them in a local SQLite database as a "known good" reference. Call drift_compare later to detect regressions.

Adapted from scripts/drift_baseline.py in claude-seo (Dan Colta methodology, MIT). No Google API calls. CWV capture requires CRUX_API_KEY (skipped otherwise).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
skip_cwvNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the fetch side effect, that results are persisted to a local SQLite database as a 'known good' reference, that no Google API calls are made, and that CWV capture requires CRUX_API_KEY and is skipped without it. This is meaningful behavioral context, though error/failure behavior on unreachable pages is not covered.

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

Conciseness4/5

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

Front-loads the purpose, then the mechanics and caveats, with no filler in the operational sentences. The provenance line about drift_baseline.py / Dan Colta methodology is arguably extraneous but is short and bounded.

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

Completeness4/5

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

An output schema exists, so return-value explanation is unnecessary, and the description covers purpose, side effects, dependency, and the follow-up tool. It is nearly complete; only the sibling-routing detail (versus drift_history) and failure handling are absent, which are minor for a baseline-capture 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 coverage is 0%, so the description needs to compensate for two undocumented parameters. It indirectly clarifies skip_cwv by explaining that CWV capture requires CRUX_API_KEY and is 'skipped otherwise,' and url's role is self-evident, but neither parameter is named or given format/type details. Partial compensation warrants a mid score.

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 ('Capture an SEO baseline snapshot for a URL') and immediately enumerates what it extracts, so an agent knows exactly what this produces. It also names the sibling it pairs with (drift_compare), distinguishing it from that tool without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Gives clear sequencing guidance ('Call drift_compare later to detect regressions'), which establishes the baseline-then-compare workflow with the sibling drift_compare. It stops short of stating when NOT to use it (e.g. versus drift_history or when a baseline already exists), so it is clear but not exhaustive.

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

drift_compareA

Compare current page state to a stored baseline and report SEO drift.

Applies 17 comparison rules (8 CRITICAL, 6 WARNING, 3 INFO) and returns triggered findings with severity, old/new values, and recommended actions. Call drift_baseline first if no baseline exists for this URL.

Adapted from scripts/drift_compare.py in claude-seo (Dan Colta methodology, MIT). No Google API calls. CWV comparison requires CRUX_API_KEY (skipped otherwise).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
skip_cwvNo
baseline_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and adds useful context: 17 rules with severity tiers, old/new values, recommended actions, no Google API calls, and the CRUX_API_KEY dependency. It still does not state read-only safety explicitly or describe auth/rate-limit behavior, so it is strong but not complete.

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 front-loaded and mostly efficient, with the core purpose and prerequisite stated early. The attribution line about claude-seo/Dan Colta/MIT does not help an agent invoke the tool and is the main non-essential sentence.

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

Completeness3/5

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

The output schema covers return values, and the description explains the comparison rules, severity model, and CWV dependency well. However, for a 3-parameter tool with 0% schema description coverage, it leaves baseline_id and skip_cwv insufficiently explained, so the definition is only partially complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain the three parameters. It implies the URL is the target and hints at CRUX/CWV behavior, but it never explains baseline_id or skip_cwv, leaving key parameters semantically undocumented.

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

Purpose5/5

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

The first sentence names a specific verb and resource: comparing current page state against a stored baseline to report SEO drift. It clearly distinguishes the tool from general page-analysis siblings by focusing on baseline comparison and drift findings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

It explicitly says to call drift_baseline first if no baseline exists for the URL, giving a clear prerequisite. It also notes that CWV comparison requires CRUX_API_KEY and is skipped otherwise, but it does not describe when not to use this tool or name alternative drift tools.

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

drift_historyA

Return recent drift comparisons for a URL.

Shows comparison timestamps, triggered finding counts by severity, and baseline IDs. Use drift_compare to run a fresh comparison.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the return shape (timestamps, triggered finding counts by severity, baseline IDs) and implies a read operation, but says nothing about pagination behavior, the default 10-item cap, or any rate/auth constraints.

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 compact sentences, front-loaded with the core action and followed by the sibling disambiguation. Nothing is wasted.

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

Completeness3/5

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

An output schema exists, so detailing return fields is not strictly required, and the read context is adequate. However, for a two-parameter tool at 0% schema coverage, leaving 'limit' undocumented is a real gap.

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

Parameters2/5

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

Schema description coverage is 0% and there are two parameters. The description explains neither the required 'url' nor the optional 'limit' (default 10, page size semantics). 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?

States a specific verb+resource ('Return recent drift comparisons for a URL'), and the sibling drift_compare is explicitly named, so the agent can distinguish it. Clear, though it does not explicitly label the tool as read-only.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Explicitly routes the agent: use this for history and 'drift_compare to run a fresh comparison.' That is a real when/when-not distinction. It lacks guidance on the limit parameter or freshness windows, but the core routing is present.

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

ga4_conversion_funnelA

Fetch GA4 conversion data: pages that generated conversions, and event counts.

Runs two reports in sequence: pages ranked by conversion count, and events ranked by event_count (optionally filtered to a specific event_name). Useful for identifying which pages and events drive goals. Dates use GA4 relative format. hostname and country narrow both reports to a specific host or country.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNo
end_dateNotoday
hostnameNo
event_nameNo
start_dateNo28daysAgo
property_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Without annotations, the description carries the burden. It discloses sequential report execution and date format, but lacks read-only confirmation, rate limits, or side effect details. This is 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.

Conciseness5/5

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

The description is concise with front-loaded main action, using four clear sentences without fluff.

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

Completeness4/5

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

Given 6 parameters, no annotations, and an output schema, the description covers the main usage and report structure well, though it omits error handling or 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 0%, so the description must compensate. It explains date relative format, hostname/country filtering, and event_name filter, but does not clarify property_id or provide complete parameter meanings.

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

Purpose5/5

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

The description clearly states it fetches GA4 conversion data, specifically pages with conversions and event counts, and runs two sequential reports. This distinguishes it from sibling tools like ga4_page_performance or ga4_user_behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description provides context by noting it is useful for identifying which pages and events drive goals, but does not explicitly state when to use it versus alternatives or mention exclusions.

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

ga4_funnelA

Run a GA4 funnel report using the v1alpha RunFunnelReport API.

Each step is a dict with 'name' (display label) and 'event' (GA4 event name). Requires at least 2 steps. Returns users per step and conversion rate relative to step 1. Step 1 conversion_rate is always null. Pass property_id to override GA4_PROPERTY_ID for multi-property setups.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsYes
end_dateYes
start_dateYes
property_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that step 1 conversion_rate is always null and that at least 2 steps are required. It does not mention rate limits or authentication, but the read-only nature of a report tool is implied.

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

Conciseness5/5

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

The description is concise (4 sentences), front-loaded with the main purpose, and each sentence adds necessary detail without redundancy.

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

Completeness4/5

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

For a tool with 4 parameters, no schema descriptions, and an existing output schema, the description covers the step structure, output format, and property_id override. It could elaborate on date format but is otherwise 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?

Since the schema has 0% coverage, the description adds meaning by explaining that steps are dicts with 'name' and 'event', and that property_id is optional for overriding defaults. However, it does not detail the date parameters.

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

Purpose4/5

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

The description clearly states it runs a GA4 funnel report via a specific API, explains the step structure, and mentions output details. However, it does not differentiate from the sibling tool 'ga4_conversion_funnel', which could cause confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description provides some context (e.g., overriding property_id for multi-property setups) but lacks explicit guidance on when to use this tool versus alternatives, such as 'ga4_conversion_funnel'.

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

ga4_organic_landing_pagesA

Fetch GA4 landing page performance filtered to organic traffic only.

Dates use GA4 relative format: '28daysAgo', 'today', '7daysAgo', 'yesterday', or 'YYYY-MM-DD'. Returns sessions, engaged_sessions, bounce_rate, avg_session_duration, conversions, and revenue per landing page. Pass property_id to override GA4_PROPERTY_ID for multi-property setups. hostname and country narrow results to a specific host or country.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
countryNo
end_dateNotoday
hostnameNo
start_dateNo28daysAgo
property_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It lists returned metrics (sessions, engaged_sessions, bounce_rate, etc.) which helps understand behavior. However, it does not disclose read-only nature, rate limits, auth needs, or data freshness, leaving gaps.

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

Conciseness5/5

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

The description is four sentences long, front-loaded with purpose, and each sentence adds value. No fluff or repetition. It is well-structured and easy to parse.

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

Completeness4/5

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

Given the complexity (6 parameters) and presence of an output schema, the description covers inputs well and outlines returned data. Minor gaps: limit meaning and error handling are absent, but overall it provides sufficient context for most use cases.

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

Parameters4/5

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

Schema coverage is 0%, but the description adds meaning for most parameters: explains date format (GA4 relative format), property_id override, hostname and country narrowing. Limit is mentioned but not detailed. Overall, it significantly enhances schema understanding.

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

Purpose5/5

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

The description clearly states it fetches GA4 landing page performance filtered to organic traffic only. It uses specific verbs and resources, and distinguishes from sibling tools like ga4_page_performance and ga4_traffic_sources by narrowing to organic traffic and landing pages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description explains when to use the tool (for organic landing page performance) and includes context for multi-property setups by passing property_id. However, it does not explicitly state when not to use it or mention alternative tools for different scenarios.

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

ga4_page_performanceB

Fetch GA4 page-level metrics: views, active users, session duration, engagement and bounce rates, conversions, and revenue.

Optionally filter to pages whose path contains page_path (substring match). Dates use GA4 relative format: '28daysAgo', 'today', '7daysAgo', 'YYYY-MM-DD'. hostname and country narrow results to a specific host or country.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNo
end_dateNotoday
hostnameNo
page_pathNo
start_dateNo28daysAgo
property_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses accepted date formats and substring matching for page_path, but fails to mention rate limits, authentication requirements, pagination, or error behavior. Minimal behavioral disclosure beyond basic operation.

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

Conciseness5/5

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

The description is concise (two sentences plus bullet points), front-loaded with purpose, and every sentence adds value. No fluff or redundancy. Efficiently structured.

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

Completeness3/5

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

With 6 parameters and an output schema, the description lists returned metrics and explains filters and dates, which is helpful. However, it misses explanation for property_id and does not specify acceptable format for country (e.g., code vs name). Adequate but with notable gaps.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning for 5 of 6 parameters: dates (relative format), page_path (substring match), hostname/country (narrowing). Only property_id is omitted. This adds significant value beyond the bare 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?

The description clearly states it fetches GA4 page-level metrics and lists specific metrics (views, active users, etc.). It identifies the resource and action, but does not explicitly differentiate from sibling tools like ga4_conversion_funnel or ga4_user_behavior, which limits differentiation. A clear verb and resource, but no sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description provides context on optional filters (page_path, hostname, country) and date formats, implying usage scenarios. However, it does not offer explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or when not to use it. The guidance is implied but not comparative.

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

ga4_realtimeA

Fetch active users in the last 30 minutes from the GA4 Realtime API.

Groups active users by screen name, country, and device category. Use for live traffic monitoring. No date range applies — this reflects the current moment only. hostname narrows results to a specific host (country is already a dimension, not a filter).

ParametersJSON Schema
NameRequiredDescriptionDefault
hostnameNo
property_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so description discloses grouping behavior (by screen name, country, device category) and parameter nuance for hostname. Could mention auth/rate limits but sufficient for read operation.

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

Conciseness5/5

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

Four sentences, each with distinct value. Front-loaded with main action. No redundant words.

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

Completeness4/5

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

Covers purpose, grouping, and param usage. Though output schema exists, description could mention it returns active users grouped; still adequate for a realtime monitoring 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 has 0% description coverage, so description must clarify. Explains hostname narrows results but leaves property_id unexplained. Adds some value over bare schema.

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

Purpose5/5

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

Clearly states verb 'fetch', resource 'active users', and time window 'last 30 minutes from the GA4 Realtime API'. Distinguishes from siblings like ga4_conversion_funnel by specifying 'realtime' and 'current moment'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Explicitly says 'Use for live traffic monitoring' and notes no date range applies. Does not name alternatives or when not to use, but context is clear.

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

ga4_traffic_sourcesA

Fetch GA4 sessions grouped by channel group, source, and medium.

Shows which traffic channels (Organic Search, Direct, Referral, etc.) drive the most sessions, engagement, conversions, and revenue. Dates use GA4 relative format: '28daysAgo', 'today', 'YYYY-MM-DD'. hostname and country narrow results.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNo
end_dateNotoday
hostnameNo
start_dateNo28daysAgo
property_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses grouping, metrics, date format, and filtering, but does not address permissions, rate limits, or potential pitfalls.

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

Conciseness5/5

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

Two concise sentences covering verb, resource, grouping, metrics, date format, and filtering. No redundant 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?

Has output schema so return values are likely covered. Description explains grouping and metrics, but lacks clarity on property_id requirement and authentication. Adequate but not fully complete for a 5-parameter tool.

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

Parameters3/5

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

Schema description coverage is 0%, so description adds value by explaining start_date/end_date formats and filtering with hostname/country. However, property_id is not described, which may be critical.

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

Purpose4/5

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

The description clearly states it fetches GA4 sessions grouped by channel group, source, and medium, and mentions key metrics. However, it does not explicitly differentiate from sibling tools like ga4_conversion_funnel or ga4_organic_landing_pages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies usage for traffic source analysis and provides date format hints, but lacks explicit guidance on when to use this tool vs alternatives, prerequisites, or exclusions.

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

ga4_user_behaviorA

Fetch GA4 sessions and engagement rate broken down by device, country, and user type.

Executes a single batch request returning three reports: by device category, by country (top 20), and by new vs returning users. Useful for audience analysis. hostname and country narrow results across all three sub-reports.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNo
end_dateNotoday
hostnameNo
start_dateNo28daysAgo
property_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses that the tool executes a single batch request and returns three reports, implying a read-only operation. It does not mention side effects, rate limits, or authentication, but the behavior is reasonably transparent for a reporting tool.

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

Conciseness5/5

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

The description is concise with two paragraphs and four sentences. The first sentence front-loads the core purpose, followed by a technical detail, a usage hint, and a filter clarification. No filler or repetition.

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

Completeness4/5

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

Given the tool has an output schema, the description's lack of return structure detail is acceptable. It sets expectations by naming the three reports. However, the missing parameter documentation for property_id creates a gap, preventing a perfect score.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only explains hostname and country as filters, leaving start_date, end_date, and property_id unexplained. The property_id is especially important as it is nullable with a default null, and the description does not clarify how it is resolved.

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

Purpose5/5

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

The description clearly states the tool fetches GA4 sessions and engagement rate broken down by device, country, and user type. It specifies it executes a single batch request returning three reports, which distinguishes it from sibling tools like ga4_conversion_funnel or ga4_page_performance that focus on other metrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description provides useful context by stating it is 'useful for audience analysis' and explains that hostname and country parameters narrow results across all sub-reports. This helps an agent decide when to use it, though it does not explicitly exclude other use cases or name alternatives.

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

gbp_deprecation_lintA

Scan a page for deprecated Google Business Profile (GBP) features.

Checks for GBP chat widget embed scripts, dead .business.site links, and Reserve with Google (deprecated) integrations. No authentication required.

Verdicts: clean | deprecated_found | fetch_error.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It usefully discloses 'No authentication required' and the possible verdict values (clean | deprecated_found | fetch_error), but says nothing about fetching behavior, network/timeout handling, or rate limits that matter for a live-page scan.

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

Conciseness4/5

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

Front-loaded with the core action, then the checked features, then the auth note. Structure is clean and readable. The verdict line is somewhat redundant since an output schema exists, costing it a point.

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

Completeness4/5

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

An output schema exists, so return values need not be explained. The description covers what is scanned, what it detects, and the auth requirement. It could add more on scan behavior (rendering, redirects, error conditions) but is essentially complete for a single-argument check tool.

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

Parameters3/5

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

Schema description coverage is 0% and the single 'url' parameter has no schema description, so the description does not compensate with format guidance (e.g., full absolute URL vs. relative). The parameter is largely self-evident given the tool name, so the gap is minor rather than severe.

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

Purpose5/5

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

Specific verb ('Scan') plus a precise resource ('a page for deprecated Google Business Profile features'), and it enumerates exactly what is checked: chat widget embed scripts, dead .business.site links, and Reserve with Google integrations. No sibling tool in the list covers GBP deprecation, so it is clearly distinguishable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

Usage is implied by the enumerated checks (use it to find deprecated GBP features on a page), but there is no explicit when/when-not guidance and no named alternatives. For a narrow, unique tool this is adequate, though it doesn't route the agent against any competing sibling.

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

get_advanced_search_analyticsA

Fetch GSC search analytics with full control over search_type, data_state, dimensions, and row limit.

search_type: 'web' (default), 'image', 'video', or 'news'. data_state: 'final' (default, omit to use API default) or 'all' (includes fresh unverified data). dimensions: list of 'query', 'page', 'device', 'country', 'searchAppearance'. Use when get_search_analytics defaults are not sufficient.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYes
row_limitNo
data_stateNo
dimensionsNo
search_typeNoweb
date_range_daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It details parameter options but does not disclose side effects, authentication requirements, or rate limits. Since it is a read operation, safety is implied but not stated.

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

Conciseness5/5

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

The description is very concise, with a single introductory sentence followed by bullet-like parameter explanations. No extraneous words, and the purpose is front-loaded.

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

Completeness4/5

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

Given the tool has 6 parameters, 0% schema coverage, and an output schema exists, the description covers the main controllable aspects. It could mention that it returns analytics rows, but the output schema handles that, so completeness 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?

Schema coverage is 0%, so the description compensates by explaining the allowed values for search_type, data_state, and dimensions. However, it does not explain the site, date_range_days, or row_limit parameters beyond their names.

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

Purpose5/5

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

The description starts with a clear verb 'Fetch' and specifies the resource 'GSC search analytics'. It lists controllable parameters, distinguishing it from the simpler sibling get_search_analytics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Explicitly states 'Use when get_search_analytics defaults are not sufficient', providing clear guidance on when this tool is appropriate versus the sibling. Could be slightly more explicit about when not to use it.

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

get_capabilitiesA

List all available tools and declared search-engine credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses that the response includes 'declared search-engine credentials' — behavior beyond the name — but says nothing about whether those credentials are masked, whether auth is required, or about rate limits.

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

Conciseness5/5

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

A single front-loaded sentence that states the action and the two return categories with no filler. Nothing to trim.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and there are no parameters to document. The definition is essentially complete for a zero-arg discovery tool, with only the missing usage framing as a minor gap.

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

Parameters4/5

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

Zero parameters, so the schema-side burden is nil and baseline is 4. There is nothing further for the description to clarify about arguments.

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 ('List') and resource ('all available tools and declared search-engine credentials'), which is unambiguous. As a meta/discovery tool it is trivially distinguishable from the SEO-analysis siblings, though it does not explicitly name that relationship.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies a discovery use case (enumerate tools and credential state) but gives no explicit when-to-use, prerequisites, or when-not guidance. An agent can infer it should be called to learn available capabilities, but this is left implicit.

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

get_performance_overviewB

Summarise total clicks, impressions, average CTR and average position for a site.

Returns aggregate totals plus the top 10 queries by clicks over the rolling window.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool returns aggregate totals and top 10 queries, but does not mention read-only nature, potential rate limits, or any side effects. The behavioral details are minimal.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main purpose and key outputs. Every sentence is meaningful with no wasted words, achieving high efficiency.

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

Completeness4/5

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

Given the tool has only 2 parameters and an output schema, the description provides the core purpose and key behavioral detail (top 10 queries). It is almost complete, though could mention aggregation over time or site scope more explicitly.

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 explain parameters. It mentions 'for a site' and 'over the rolling window', which loosely map to 'site' and 'days', but doesn't clarify the 'days' format, default, or what 'rolling window' means. It adds some value but lacks detail.

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

Purpose4/5

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

The description clearly states the tool summarizes total clicks, impressions, average CTR, and average position, and returns aggregate totals plus top 10 queries. This provides a specific verb and resource, but doesn't explicitly distinguish from siblings like 'get_search_analytics' which may offer similar metrics.

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 implies usage for a site's performance overview over a rolling window, but provides no guidance on when to use this tool versus alternatives or when not to use it. No explicit context or exclusions are given.

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

get_search_analyticsB

Fetch GSC search analytics (clicks, impressions, CTR, position) for a site.

Groups results by the requested dimensions (query, page, device, country). Data has a 3-day reporting lag; the window covers the days days ending 3 days ago.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes
row_limitNo
dimensionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Discloses 3-day reporting lag and the rolling window end date. With no annotations, description carries burden; it is adequate but does not explicitly state read-only nature or other safety details.

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

Conciseness5/5

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

Two concise sentences, front-loaded with purpose and key details. No fluff, every sentence adds value.

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 fetch tool with 4 parameters and existing output schema, the description covers purpose, grouping, and data freshness. Missing some parameter details but overall adequate for agent usage.

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

Parameters3/5

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

0% schema description coverage, but description adds meaning for 'dimensions' (lists possible values: query, page, device, country) and explains 'days'. Does not mention 'row_limit' or 'site' format, so partial compensation.

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?

Clear verb 'Fetch' with specific resource 'GSC search analytics' and lists metrics (clicks, impressions, CTR, position). Groups by dimensions is mentioned, but no explicit differentiation from siblings like 'get_advanced_search_analytics'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No explicit when-to-use or when-not-to-use guidance. Does not mention alternatives or compare to sibling tools. Only implies usage via describing the function.

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

get_search_by_page_queryA

Fetch GSC data grouped by both page and query simultaneously.

Useful for identifying which query drives which page and diagnosing on-page relevance issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes
row_limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavioral traits. It indicates grouping but does not disclose pagination, sorting behavior, or whether the operation is read-only. For a fetch tool, basic transparency is there but limited.

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

Conciseness4/5

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

The description is concise with two sentences, front-loading the main action. It could be improved by integrating parameter explanations but remains efficient.

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 3 parameters and 0% schema coverage, the description is incomplete. It does not mention required parameters or defaults, and the context signals show output schema exists but that doesn't compensate for missing parameter documentation.

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

Parameters2/5

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

The input schema has 0% description coverage for parameters, and the description does not explain what 'site', 'days', or 'row_limit' mean. It only describes the tool's core purpose without parameter details, leaving the agent uninformed.

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

Purpose5/5

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

The description explicitly states 'Fetch GSC data grouped by both page and query simultaneously,' providing a specific verb and resource. It distinguishes the tool from siblings like get_search_analytics by highlighting the dual grouping dimension.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description adds 'Useful for identifying which query drives which page and diagnosing on-page relevance issues,' providing a clear use case. However, it lacks explicit guidance on when not to use it or alternatives among the many sibling tools.

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

get_site_detailsA

Get the permission level for a specific GSC property URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

The description implies a read operation ('Get'), but with no annotations, the agent has no information about side effects, authorization requirements, rate limits, or data freshness. Minimum viability but lacks depth.

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

Conciseness5/5

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

The description is a single, concise sentence that immediately conveys the tool's purpose without extraneous information.

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

Completeness4/5

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

Given the simple nature (one parameter) and existence of an output schema, the description is mostly adequate. However, it could be improved by summarizing the output characteristics, such as the structure of permission details.

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

Parameters2/5

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

Schema coverage is 0%, and the description adds no details about the site_url parameter (e.g., expected format, constraints, or how to obtain it). This leaves the agent with insufficient guidance.

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

Purpose5/5

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

The description clearly states the action (Get), the resource (permission level), and the target (specific GSC property URL). It is distinct from siblings like get_capabilities or get_performance_overview which focus on other aspects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. With many sibling tools, explicit usage context would help the agent decide, especially since the tool is specialized (permission level only).

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

heading_auditA

Audit the heading structure of a page: H1 uniqueness, hierarchy, and title overlap.

Checks that exactly one H1 exists, that heading levels do not skip (H2 straight to H4), that the is not a word-for-word copy of the H1 (a duplicate wastes a second angle on the target keyword), and that headings actually say something rather than filling a slot ("Introduction", "Conclusion").

Also reports words per H2, since a long page with no subheadings reads as a wall.

No Google API calls. No authentication required. Verdicts: healthy | issues_found | fetch_error.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden well: it discloses that no Google API calls are made, no authentication is required, and that the tool returns one of three verdicts (healthy, issues_found, fetch_error), the last implying it may attempt a fetch. It does not state rate limits or explicitly confirm read-only behavior, but the operational context is strong.

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

Conciseness4/5

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

The core purpose is front-loaded, followed by specific checks and then brief operational notes. Some rationale (e.g., 'a duplicate wastes a second angle on the target keyword') is verbose but earns its place by explaining why the check matters.

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

Completeness3/5

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

An output schema exists, so return values need not be detailed in the description, and the tool's complexity is low (one required parameter). However, the absence of any parameter description and the lack of explicit read-only confirmation leave gaps that an agent would need to infer.

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

Parameters2/5

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

Schema description coverage is 0% for the sole 'url' parameter, and the description never specifies its format, whether it must be absolute, or how it is used. The phrase 'of a page' implies a page URL but adds no concrete meaning beyond the parameter name.

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

Purpose5/5

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

Specific verb 'audit' and resource 'heading structure of a page', followed by an enumeration of exact checks: H1 uniqueness, level skipping, title-H1 overlap, meaningful heading text, and words per H2. This clearly distinguishes it from generic siblings like content_quality or page_technical_audit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

The description explains what the tool checks but offers no guidance on when to use it versus alternatives such as content_quality or page_technical_audit. It mentions no prerequisites beyond 'No authentication required', and gives no when-not or exclusion conditions.

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

hreflang_auditA

Fetch a URL and validate its hreflang implementation.

Checks: missing x-default, invalid ISO 639-1 language codes, invalid ISO 3166-1 region codes, missing self-referencing tag, and mixed HTTP/HTTPS in the alternate set. Single-page audit: does not follow each alternate URL to verify bidirectional return tags.

Validation rules derived from skills/seo-hreflang/SKILL.md in claude-seo (agricidaniel, MIT). No authentication required. Verdicts: valid | issues_found | no_hreflang | fetch_error.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden and largely meets it: it discloses that no authentication is required, that the operation is a fetch/validate (non-destructive), that validation logic comes from a cited source, and that the tool intentionally does not follow alternates. The verdict vocabulary (valid | issues_found | no_hreflang | fetch_error) foreshadows failure modes, though the fetch_error conditions themselves are not described.

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

Conciseness4/5

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

Front-loaded with the core purpose, then a scannable list of checks, a scope caveat, provenance, and the verdict set. Efficient overall; the source-attribution line is defensible for trust but is not load-bearing for an agent deciding whether to call the tool.

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

Completeness4/5

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

The presence of an output schema means return values need not be explained, and the description sensibly adds only the verdict vocabulary. Combined with the disclosed checks, scope limitation, and no-auth note, an agent has nearly everything needed; the only gap is parameter format guidance, which is not covered anywhere.

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

Parameters3/5

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

Schema description coverage is 0% for the single 'url' parameter, so the description must compensate. "Fetch a URL" implies the parameter is the page under audit, but it says nothing about expected format (absolute vs relative, scheme handling), which matters given the tool flags mixed HTTP/HTTPS. Adequate but thin for a low-coverage schema.

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

Purpose5/5

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

Opens with a precise verb+resource statement ("Fetch a URL and validate its hreflang implementation") and then enumerates the exact checks performed. The enumeration makes it plainly distinct from neighbouring audit tools such as page_technical_audit, heading_audit, and internal_links_audit, which share the 'audit' family name but cover different surfaces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The scope boundary is explicit: "Single-page audit: does not follow each alternate URL to verify bidirectional return tags," which tells the agent where this tool stops. It stops short of naming an alternative tool or the condition under which a deeper crawl-level hreflang check should be used instead, so it is clear context without explicit routing.

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

indexnow_submitA

Submit URLs to IndexNow, notifying Bing, Yandex, Seznam, and Naver simultaneously.

Each URL must pass strict SSRF validation and match site's exact HTTPS origin. A 200 or 202 means only that the notification was received, never that a URL was crawled or indexed. The key is sent to IndexNow but never returned in output.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
siteYes
urlsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does a good job: it discloses that 200/202 only means the notification was received (never that crawling/indexing happened), that the key is transmitted but never echoed in output, and that strict SSRF validation and origin matching apply. It omits auth requirements, rate limits, and quota behavior, which is what keeps it below 5.

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

Conciseness5/5

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

Three sentences, each earning its place: the core action and engine list come first, then the input constraints, then the semantics of the success response and key handling. No filler or restatement of the tool name.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the response-semantics caveat is a nice touch. But for a 3-required-parameter, zero-schema-coverage, zero-annotation mutation tool, the description still leaves format expectations, idempotency, and quota/rate-limit behavior unaddressed.

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

Parameters3/5

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

Schema description coverage is 0% and all three parameters are bare strings/array, so the description must compensate. It adds real meaning for `urls` (SSRF validation, exact HTTPS origin) and `key` (sent but not returned), but says nothing about the expected format of `site` or `key` (e.g. key-file token vs. URL), leaving format ambiguity unresolved.

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 (submit) and resource (URLs via the IndexNow protocol) and enumerates the receiving engines (Bing, Yandex, Seznam, Naver), which is meaningfully distinct from the Bing Webmaster submission siblings. However, it never names an alternative such as submit_url, submit_batch, or bing_url_submit, so the agent must infer the boundary itself.

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 states validation preconditions (SSRF check, exact HTTPS origin match) but gives no when-to-use/when-not-to-use guidance and does not route the agent between this and the many other submission tools (submit_url, submit_sitemap, bing_urls_submit_batch). An agent cannot tell from this text when IndexNow is preferable to the Bing API path.

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

inspect_urlB

Inspect a single URL in GSC to get its indexing status, last crawl time, and canonical URL.

Returns verdict (PASS/NEUTRAL/FAIL), robotsTxtState, indexingState, pageFetchState, googleCanonical, userCanonical, and a derived category (indexed, robots_blocked, fetch_error, canonical_issue, not_indexed, unknown).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
siteYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral burden. "Inspect" implies a read-only operation, which is useful, but it says nothing about auth/property requirements, rate limits, or the fact that the input site must be a verified GSC property. It is transparent about outputs only.

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

Conciseness4/5

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

Front-loaded and tight: purpose first, then expected outputs. The return-field enumeration partly duplicates the existing output schema, which is mildly wasteful, but the text is otherwise economical.

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

Completeness3/5

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

An output schema exists, so the return-value listing is somewhat redundant, and the description omits the usage routing versus batch_url_inspection and the meaning of the site parameter. Adequate for a simple inspect tool but with clear gaps.

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

Parameters2/5

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

Schema description coverage is 0% for two parameters. The description implies the url argument but never clarifies what "site" means (e.g. GSC property identifier/format), leaving a required parameter semantically undocumented in both schema and description.

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

Purpose4/5

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

States a specific verb ("Inspect") and resource ("a single URL in GSC") plus the data returned (indexing status, last crawl time, canonical URL). The word "single" implicitly contrasts with the batch_url_inspection sibling, but 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 implied by "single URL" versus the batch alternative, but there is no explicit when-to-use, when-not-to-use, or named alternative. An agent must infer the single-vs-batch routing itself.

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

list_propertiesA

List all GSC properties the authenticated account can access, with their permission levels.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It mentions authentication context and permission levels, which adds transparency. However, it does not disclose pagination, rate limits, or behavior when no properties are found.

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

Conciseness5/5

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

The description is a single sentence with 14 words, highly concise and front-loaded with the main action. Every word adds value.

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

Completeness4/5

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

The description is complete for a simple list tool with no parameters and an output schema. It covers the basic purpose and key details (permission levels). Could mention edge cases but not critical.

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 schema has zero parameters, so the description does not need to add parameter details. It appropriately focuses on the tool's action and output, which is sufficient given the simple input.

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

Purpose5/5

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

The description clearly states the tool's purpose: listing GSC properties with permission levels. It uses a specific verb ('List') and resource ('GSC properties'), and distinguishes from sibling tools like 'get_site_details' which work on a single 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?

The description implies usage for accessing available properties but does not explicitly state when to use this tool versus alternatives, nor does it mention any prerequisites or when not to use it.

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

list_sitemapsB

List all sitemaps submitted to a GSC property, with submission dates, status, and error counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description must fully convey behavior. It states the tool lists all sitemaps with their dates, status, and errors, implying a read-only operation. However, it lacks details on pagination, ordering, or potential side effects. It does add value beyond the empty schema descriptions.

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

Conciseness5/5

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

The description is a single concise sentence that effectively conveys the tool's purpose and expected output. There is no wasted text, and it is front-loaded with the action.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, list output), the description covers the main functionality and output fields. However, it omits details on the site parameter format and potential output schema details, though an output schema exists. Overall adequate.

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

Parameters2/5

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

The schema has 0% description coverage for the only parameter 'site'. The tool description mentions submitting to a GSC property, which hints at the parameter's purpose, but does not explain the required format, source, or constraints. This is insufficient to compensate for the lack of schema descriptions.

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

Purpose4/5

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

The description clearly states the tool lists all sitemaps for a GSC property, including specific fields (dates, status, error counts). The verb 'list' and resource 'sitemaps' are specific and distinguishable from siblings like 'sitemaps_get' (single sitemap) and 'sitemap_audit' (analysis), though not explicitly differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'sitemaps_get' or 'submit_sitemap'. There are no usage conditions, prerequisites, or when-not-to-use instructions.

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

news_performanceA

Get Google News performance: top pages by impressions (News does not support query dimension).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Without annotations, the description carries full burden. It discloses that News does not support query dimension, a key behavioral constraint. However, it omits details like data range (days parameter), pagination (limit), and response structure, limiting transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence that fronts the purpose and adds a constraint. No unnecessary words, and it earns its place with the query dimension note.

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?

Given the tool returns data (output schema exists but not detailed), the description should explain what fields are returned. It only mentions 'top pages by impressions', neglecting other potential columns. For a tool with many siblings, more context on output format is needed.

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 0% schema description coverage, the description must compensate but does not. It fails to explain the 'days', 'site', or 'limit' parameters. While parameter names are somewhat clear, their roles (default values, required vs optional) are not clarified, leaving ambiguity.

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

Purpose5/5

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

The description clearly states the tool retrieves Google News performance data, specifically top pages by impressions, and explicitly distinguishes it by noting that News does not support the query dimension. This differentiates it from siblings like get_search_analytics or discover_performance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies usage for News performance data but does not explicitly state when to use this tool over alternatives (e.g., discover_performance for Discover, get_performance_overview for aggregated data). No exclusions or scenarios are given.

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

page_analysisA

Join GSC and GA4 data at the page level and rank by opportunity score.

GSC rows are fetched with dimensions=["page"] (already aggregated per page). GA4 organic landing pages are fetched with a high limit to avoid truncation. Pages are joined on _normalize_url. Pages that appear in only one source get None for the missing fields.

opportunity_score = log10(impressions+1)10 + engagement_rate100 + log10(conversions+1)*20

engagement_rate is derived as engaged_sessions/sessions (GA4 native formula) because ga4_organic_landing_pages does not expose it directly.

Results are sorted by opportunity_score descending, truncated to limit. hostname and country narrow the GA4 query to a specific host or country.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes
limitNo
countryNo
hostnameNo
property_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: joining on normalized URL, handling missing pages, computing opportunity score with formula, sorting, truncating, and deriving engagement rate. This is thorough and transparent.

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

Conciseness4/5

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

The description is slightly long but well-structured with clear statements. Each sentence adds value, though some redundancy could be trimmed. Front-loaded with the core purpose.

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

Completeness4/5

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

Given the complexity of joining two data sources and no annotations, the description covers joining logic, scoring formula, sorting, and truncation. Missing parameter details for all parameters slightly reduces completeness.

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 description must compensate. It explains 'hostname', 'country', and 'limit' but does not cover 'site', 'days', or 'property_id' explicitly. Partial addition of meaning beyond schema.

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

Purpose5/5

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

The description clearly states the tool joins GSC and GA4 data at the page level and ranks by opportunity score. It uses specific verbs like 'Join' and 'rank' and distinguishes itself from siblings like 'ga4_organic_landing_pages' by explaining the combination.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description implies usage for combined page-level analysis but does not explicitly state when to use this tool over alternatives. It provides context on data sources and joining logic, which helps understand its purpose.

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

page_health_scoreA

Compute a 0-100 health score for a single page by combining GSC, GA4, CrUX, and schema data.

Each component contributes a portion of the total score (100 pts):

  • GSC (30 pts): indexing_state == "INDEXING_ALLOWED" -> 20 pts; verdict == "PASS" -> 10 pts

  • GA4 (25 pts): active_users > 0 -> 15 pts; engagement_rate > 0.4 -> 10 pts

  • CrUX (25 pts): LCP good -> 10 pts; INP good -> 8 pts; CLS good -> 7 pts

  • Schema (20 pts): schemas found -> 10 pts; no validation errors -> 10 pts

GA4, CrUX, and Schema components are each wrapped in try/except RuntimeError so that missing credentials or insufficient data degrade the score gracefully. The final score is renormalized over available components: score = round((earned / max_available) * 100). If all components fail, returns score=0.

property_id overrides GA4_PROPERTY_ID for multi-property setups. hostname and country are forwarded to GA4 for scoped queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
siteYes
countryNo
hostnameNo
property_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It transparently discloses the scoring breakdown, error handling via try/except for missing credentials or data, renormalization over available components, and the fallback score of 0. This gives the agent a clear picture of behavior beyond a simple 'compute' call.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, then uses a clear bullet list for the scoring breakdown. Every sentence adds value; there is no redundancy or filler. The length is justified by the complexity of the calculation.

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

Completeness4/5

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

The output schema exists, so return values need not be described. The description covers calculation logic, error scenarios, and parameter roles. It does not explicitly state necessary permissions or setup for GSC/GA4/CrUX, but the error handling implies missing credentials are gracefully handled. Sufficient for a computational 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 coverage is 0%, so description must compensate. It explains property_id overrides GA4_PROPERTY_ID and hostname/country scope GA4 queries, but url and site remain under-explained (only 'required'). For a 5-parameter tool, coverage is partial but adds meaningful context for three parameters.

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

Purpose5/5

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

The description starts with a clear action verb 'Compute' and specifies the resource: a 0-100 health score for a single page. It explicitly lists the four data sources (GSC, GA4, CrUX, schema), immediately distinguishing it from sibling tools like crux_page_vitals or ga4_page_performance that provide only component 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?

The description explains what the tool does but offers no guidance on when to use it versus alternatives among the many sibling tools. There is no mention of prerequisites, limitations, or typical use cases that would help an agent choose this tool over others like batch_url_inspection or page_analysis.

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

pagespeed_auditB

Run a PageSpeed Insights audit via Google's PSI API v5.

Requires GOOGLE_API_KEY environment variable (plain API key, not service account). The PageSpeed Insights API must be enabled in the GCP project.

strategy: "mobile" (default) or "desktop". Returns Lighthouse performance score, Core Web Vitals, and top opportunities. Verdicts: good (score>=90) | needs_improvement (50-89) | poor (<50) | missing_key | fetch_error.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
strategyNomobile

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose real behavioral context: a plain GOOGLE_API_KEY is required (not a service account) and the PSI API must be enabled. It also enumerates failure verdicts (missing_key, fetch_error). However, it omits important runtime traits such as rate limits, the slow/long-running nature of PSI audits, and quota behavior.

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

Conciseness4/5

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

Front-loaded with the core action and prerequisites, then parameter values and outputs in a tight, scannable layout. Slight redundancy in restating return values that the output schema already provides.

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 2-parameter tool with an output schema and no annotations, the prerequisite/auth details, strategy values, and verdict domain make it largely callable without ambiguity. Return-value restatement is unnecessary given the output schema, and runtime expectations (latency, limits) are the remaining gap.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It clarifies the only non-obvious parameter by listing strategy values ("mobile" default or "desktop"), which the schema lacks as an enum. The url parameter's format/constraints remain undocumented, so it only partially compensates for the coverage gap.

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

Purpose4/5

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

States a specific verb (Run) and resource (PageSpeed Insights audit via Google's PSI API v5), and names the concrete outputs (Lighthouse performance score, Core Web Vitals, top opportunities). It is clearly distinguishable from siblings like crux_page_vitals or page_technical_audit by naming the PSI API and Lighthouse, though it does not explicitly contrast itself against those neighbors.

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 covers prerequisites (API key, enabling the API) but gives no when-to-use guidance relative to the many sibling auditing tools (page_technical_audit, page_analysis, crux_page_vitals). An agent must infer usage context from the tool name alone.

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

page_technical_auditA

Audit on-page technical SEO: meta tags, canonical, robots.txt, security headers.

Fetches the URL (follow_redirects=False for SSRF safety) and /robots.txt. Checks: title and meta description length, canonical presence and consistency, meta robots directives, viewport tag, HTML lang attribute, security response headers (X-Frame-Options, X-Content-Type-Options, Referrer-Policy), redirect detection, and whether Googlebot is blocked in robots.txt.

For pages behind redirects, supply the final canonical URL directly. No Google API calls. No authentication required. Verdicts: healthy | issues_found | fetch_error.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does it well: it discloses that the fetch uses follow_redirects=False for SSRF safety, that /robots.txt is also retrieved, that no auth or Google API calls occur, and the possible verdicts (healthy | issues_found | fetch_error). Remaining gaps like rate limits or exact fetch timeouts are minor.

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

Conciseness4/5

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

Front-loaded with the one-line purpose, then a scannable list of checks, then constraints and verdicts. Every line is informative, though the multi-line check inventory is longer than strictly necessary for an agent that mainly needs scope and routing.

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

Completeness5/5

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

An output schema exists, so return values needn't be explained, yet the description still surfaces the verdict vocabulary. Combined with the check list, SSRF behavior, auth requirements and redirect handling, an agent has everything needed to invoke it correctly without opening the schema.

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

Parameters4/5

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

Only one parameter with 0% schema description coverage, so the description must compensate and largely does: it clarifies the url should be the final canonical URL when behind redirects, and implicitly frames it as an absolute page URL given the SSRF/redirect notes. Enum/failure-mode detail for malformed URLs is not covered.

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 (audit) and resource (on-page technical SEO) and enumerates exactly what is checked: meta tags, canonical, robots.txt, security headers, redirects, Googlebot blocking. This clearly separates it from siblings like inspect_url, pagespeed_audit, heading_audit and schema_validate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Gives a concrete usage condition ('For pages behind redirects, supply the final canonical URL directly') and contextual constraints ('No Google API calls. No authentication required'). It stops short of explicitly naming alternative tools for overlapping checks (e.g. inspect_url), but the domain is narrow enough that routing is inferable.

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

parasite_riskA

Scan URL paths for parasite SEO patterns matching Google's 2024-11-19 site-reputation policy.

Pure URL analysis, no HTTP fetches. Detects sponsored/affiliate/partner path segments, commercial product sections (/best-deals/, /top-picks/), known editorial domain patterns (Forbes Advisor /advisor/, CNN Underscored /underscored/, /select/, /commerce/), and affiliate query parameters (?ref=, ?aff=, ?partner=).

site_risk is the maximum risk level across all URLs. Verdicts: clean | at_risk | high_risk. No Google API calls. No authentication required. Adapted from claude-seo parasite_risk.py (agricidaniel, MIT).

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYes
urlsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and largely succeeds: it discloses that no HTTP fetches occur, no Google API calls are made, and no auth is required, and it enumerates the verdict values (clean | at_risk | high_risk). It omits any limit on how many URLs may be passed and does not explain what the risk levels mean beyond their names.

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

Conciseness4/5

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

Front-loads the core purpose, then efficiently layers scope, detected patterns, and output verdicts in short standalone lines. The attribution line adds little for an agent, but overall it is tight and 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?

An output schema exists, yet the description helpfully explains the verdict vocabulary and that site_risk is the max across URLs. Combined with the no-fetch/no-auth disclosures, an agent has enough to invoke it correctly; the missing pieces are the "site" parameter meaning and any input-size limits.

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

Parameters2/5

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

Schema description coverage is 0% for both parameters, so the description must compensate. It implies the nature of the "urls" input ("Scan URL paths") but never defines the "site" parameter's role or the expected URL format, leaving the required parameter undocumented.

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

Purpose5/5

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

States a specific verb ("Scan") plus resource ("URL paths") plus the exact target ("parasite SEO patterns matching Google's 2024-11-19 site-reputation policy"). It also enumerates the concrete signals it detects, so an agent can distinguish it from every sibling SEO tool, none of which performs parasite/site-reputation analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description gives clear operational context ("Pure URL analysis, no HTTP fetches", "No Google API calls", "No authentication required") that tells an agent when this cheap offline check is appropriate. However, it never names an alternative sibling or states explicit when-not conditions, so it stops short of full routing guidance.

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

preload_auditA

Audit Speculation Rules, bfcache eligibility, and LCP preload signals for a URL.

Fetches the page and response headers (SSRF-safe via safe_httpx_get), then checks:

  • Speculation Rules: (prefetch/prerender actions)

  • Speculation-Rules HTTP response header (Chrome 122+)

  • Deprecated tags (removed in Chrome 120)

  • bfcache blocker: Cache-Control: no-store in response headers

Verdicts: optimised | improvements_available | not_implemented | fetch_error. No Google API calls. No authentication required. Adapted from claude-seo preload_check.py (agricidaniel, MIT).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does so well: it discloses that it fetches the page and response headers, that the fetch is SSRF-safe via safe_httpx_get, that no auth or Google API is involved, and it enumerates the four possible verdicts. It stops short of stating rate limits, timeouts, or that the operation is strictly read-only (implied but not asserted).

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

Conciseness4/5

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

Front-loaded purpose sentence followed by a scannable bullet list of exactly what is checked, plus a verdict enum. Nearly every line earns its place, though the closing attribution line 'Adapted from claude-seo preload_check.py (agricidaniel, MIT)' adds no invocation value for an agent.

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

Completeness4/5

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

An output schema exists so return values need no explanation, and the description still helpfully lists the verdict strings. Given a single required param and no annotations, the definition covers what an agent needs to select and call it; only the URL format convention and read-only guarantee are left implicit.

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?

One parameter with 0% schema description coverage, so the description must compensate. It says the audit is 'for a URL' but never specifies the expected format (absolute vs relative, http/https, whether redirects are followed). This is enough to attempt a call but leaves ambiguity the schema does not resolve.

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 (Audit) with three named resources (Speculation Rules, bfcache eligibility, LCP preload signals) scoped to a URL. The enumerated checks make it clearly distinguishable from siblings like page_technical_audit or pagespeed_audit without opening any 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 detailed check list implies when this tool is relevant (preload/prerender/bfcache concerns) and 'No Google API calls. No authentication required' tells the agent it is free of credential setup. However, it never names an alternative or states when-not to use it versus pagespeed_audit, page_technical_audit, or crux_lcp_subparts, which overlap on LCP/performance topics.

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

prune_candidatesA

Classify pages by measured traffic before any pruning decision is taken.

Buckets every page Search Console reports over days:

  • has_traffic: at least one click. Never a candidate. Full stop.

  • impressions_no_clicks: seen in results, never clicked. Review, do not delete.

  • low_impressions: under 10 impressions. Weak signal, needs a human look.

  • zero_impressions: no impressions at all. The only defensible candidates.

The tool deliberately returns no "delete these" list. It returns evidence, and the buckets carry the recommended action. A page absent from this report was absent from Search Console too, which is a crawling question, not a pruning one.

Pair with content_quality and internal_links_audit before acting: a page with no impressions and no internal link may be starved rather than worthless.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes
engineNogoogle
max_pagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does so well: it discloses that the tool deliberately returns evidence rather than actions, that buckets encode recommended actions, and that pages absent from the report were absent from Search Console. It does not discuss rate limits, auth, or scoping behavior for site/engine, leaving minor gaps.

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?

Front-loads the purpose, then uses a bulleted bucket list that maps cleanly to the tool's output. Every sentence earns its place and the structure makes the taxonomy scannable. No redundant restatement of the name or title.

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

Completeness5/5

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

For a read-only analysis tool with an output schema, the description covers what an agent needs: the classification logic, the action implied by each bucket, and the boundaries of its conclusions. Return values are covered by the output schema, so the description need not restate them.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it explains only `days` (the reporting window). The other three parameters (`site`, `engine`, `max_pages`) are never mentioned, so an agent gets no added meaning for them beyond the schema's bare titles and defaults.

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 ('classify pages by measured traffic') and frames the tool's role as pre-pruning triage. The bucket taxonomy and the explicit note that it is not a delete list distinguish it sharply from generic traffic tools like traffic_drops or page_analysis. An agent knows exactly what this tool produces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Gives clear context for invocation ('before any pruning decision is taken') and routes the agent to complementary tools ('Pair with content_quality and internal_links_audit before acting'). It also warns what not to conclude (no delete list; absent pages are a crawling question). It stops short of naming a true alternative tool that would replace it, so it is strong but not fully exhaustive.

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

quick_winsA

Identify pages ranking between positions 4-15 whose CTR is below the industry benchmark for their rank.

Sorted by opportunity_score = (benchmark_ctr - actual_ctr) * impressions. High scores mean large click gains are possible with CTR optimisation (title/meta improvements).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes
engineNogoogle
min_impressionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it discloses real behavior: the position window (4-15), the benchmark-comparison filter, the sort key (opportunity_score), and the exact scoring formula. It does not state permission/auth needs, result limits, or that it is a read-only operation, but the algorithmic disclosure is genuinely informative.

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

Conciseness4/5

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

Three tight sentences with the purpose front-loaded, followed by the sort key and formula, then the interpretation. No filler. The formula sentence is dense but earns its place since it defines the ordering the agent will see.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and the description is complete for the conceptual purpose. But with four undocumented parameters, no annotations, and no when-to-use routing against dozens of sibling analytics tools, it leaves the agent guessing on invocation details.

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

Parameters2/5

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

Schema description coverage is 0% and all four parameters (site, days, engine, min_impressions) are undocumented in the schema. The description explains the outcome but never clarifies these inputs — e.g. that days scopes the date range, engine selects the search engine, or that min_impressions interacts with the impressions term in the formula — 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.

Purpose5/5

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

States a specific verb (Identify) applied to a specific resource (pages) with precise qualifying criteria (ranking positions 4-15, CTR below the rank benchmark). An agent can distinguish this from siblings like seo_striking_distance or get_search_analytics purely from 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 Guidelines3/5

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

Usage is implied by the definition of the output ('CTR optimisation via title/meta improvements'), giving a clear sense of when the tool is relevant. However, it never states when to choose this over close alternatives such as seo_striking_distance, nor does it state any exclusions or prerequisites, so it falls short of explicit guidance.

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

schema_generateC

Generate a Schema.org JSON-LD block for one of four high-leverage types.

Adapted from scripts/schema_generate.py in claude-seo (agricidaniel, MIT). Supports: reservation, order_action, discussion, profile. No authentication required. No Google API calls made.

schema_type: one of "reservation", "order_action", "discussion", "profile". Returns the generated JSON-LD block. Verdicts: generated | error.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
nameNo
textNo
imageNo
authorNo
same_asNo
end_timeNo
headlineNo
merchantNo
providerNo
job_titleNo
order_urlNo
works_forNo
order_nameNoOrder online
party_sizeNo
start_timeNo
descriptionNo
knows_aboutNo
profile_urlNo
schema_typeYes
comment_countNo
customer_nameNo
date_modifiedNo
customer_emailNo
date_publishedNo
reservation_idNo
delivery_methodNo
reservation_kindNoFoodEstablishmentReservation
reservation_for_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does add useful facts: no authentication required, no Google API calls made, and the two verdict outcomes (generated | error). However, it never explains which of the 29 parameters matter for which of the four schema types, which is the key behavioral detail for a tool with this fan-out.

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 purpose is front-loaded in the first sentence and the whole thing is short. The provenance line ('Adapted from scripts/schema_generate.py in claude-seo...') is agent-irrelevant overhead but minor.

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

Completeness2/5

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

An output schema exists so return values need not be explained, but for a tool exposing 29 parameters that map to four different schema types, the description omits the one thing an agent most needs: which parameters apply to which type. The parameter-to-type mapping gap makes it incomplete for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0% across 29 parameters, so the schema documents nothing. The description compensates only for schema_type by listing its four allowed values, leaving the remaining 28 optional parameters completely undocumented in both places. This is far below the compensation required at 0% coverage.

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 ('Generate a Schema.org JSON-LD block') and enumerates the four supported types, so an agent knows exactly what it produces. It does not explicitly differentiate itself from the sibling schema_validate, leaving the generate-vs-validate distinction 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 Guidelines2/5

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

It lists the supported schema types but gives no when-to-use guidance, no prerequisites, and no routing to the obvious alternative (schema_validate). The agent must guess the context in which generation is appropriate.

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

schema_validateA

Fetch a URL and validate its JSON-LD structured data schemas.

Detects all blocks, checks required fields per schema type, and suggests missing schemas based on URL patterns. Does not require authentication -- works on any public URL.

Returns detected schemas, validation results per schema, and recommendations. The valid flag and verdict check only this tool's local required-field presence rules, not full Schema.org validity or Google rich-result eligibility. Recommended properties are reported separately and do not affect validity. Verdicts: healthy (all schemas valid) | missing_schemas (none found) | invalid_schemas (found but at least one has missing required fields) | fetch_error (URL not reachable).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses the auth-free behavior, the exact meaning of the 'valid' flag, the limitation that it checks only local required-field rules and not full Schema.org or rich-result eligibility, that recommended properties do not affect validity, and it enumerates all four verdict values.

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

Conciseness4/5

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

Front-loaded with the core action, then behavioral caveats, then verdict enumeration. The verdict list is a bit sprawling but each item earns its place by removing ambiguity. Generally tight.

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

Completeness5/5

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

An output schema exists so return structure needn't be restated, yet the description still clarifies the semantics of the valid flag, verdict, and recommendations — precisely the interpretive context an agent needs. Nothing material for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 0% on the single url param. The description implies format ('any public URL') but adds no syntax or format detail beyond the obvious string and URL semantics. Minimal but adequate for one self-evident parameter.

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+resource: 'Fetch a URL and validate its JSON-LD structured data schemas.' It further specifies exactly what is detected (<script type="application/ld+json"> blocks) and what is suggested, distinguishing it clearly from the sibling schema_generate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Provides clear usage context ('Does not require authentication -- works on any public URL') and implicitly contrasts with schema_generate by being a validation rather than generation tool. However, it never explicitly names an alternative or states when-not to use it, so it stops short of full routing guidance.

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

search_type_breakdownA

Aggregate clicks and impressions broken down by search type for a site or specific URL.

Makes one GSC call per search type (web, discover, googleNews, image, video) and returns total clicks and impressions for each. If url is provided, results are scoped to that page.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
daysNo
siteYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It states 'Makes one GSC call per search type' which is useful, but doesn't disclose potential rate limits, permission needs, or performance considerations. The behavioral context is partially transparent.

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 efficiently convey purpose and behavior. No redundant information; the description is front-loaded and every sentence adds value.

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?

While an output schema exists (not shown in full), the description still lacks mention of the number of API calls and the 'days' parameter role. For a tool with few parameters, it is adequate but could provide more context to reduce agent uncertainty.

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

Parameters2/5

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

Schema coverage is 0%, so description must compensate. It explains 'site' and 'url' parameters but omits explanation of 'days' (default 28). The description does not fully cover the meaning of all three parameters, leaving ambiguity for the agent.

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

Purpose5/5

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

The description clearly states the verb 'aggregate' and the resource 'clicks and impressions broken down by search type for a site or specific URL'. It is specific and distinguishes from siblings like 'get_search_analytics' which returns overall data without breakdown.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description implies when to use this tool (when you need breakdown by search type) and mentions scoping to a URL if needed. However, it does not explicitly state when not to use or provide alternatives, though the context signals list many sibling tools.

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

seo_cannibalizationB

Detect queries where multiple pages compete for the same ranking slot.

Uses the Herfindahl-Hirschman Index (HHI) to measure click concentration across pages. conflict_score = 1 - HHI: values near 1 mean clicks are split evenly across pages (high competition). Filters to queries with at least min_impressions total impressions to exclude noise.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes
engineNogoogle
min_impressionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does a decent job: it discloses the HHI methodology, the exact conflict_score = 1 - HHI formula and its interpretation, and the min_impressions noise filter. It does not state whether the operation is read-only or what happens to queries below the threshold query count, but the scoring behavior is unusually well explained.

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

Conciseness4/5

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

Front-loaded purpose followed by three short lines covering methodology, score interpretation, and the filtering rule. Each sentence carries information, though the HHI formula line is closer to internal documentation than agent-facing 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?

An output schema exists, so return values need not be explained, and the scoring semantics are covered. However, three of four input parameters are undocumented with zero schema descriptions and there is no annotation coverage, leaving meaningful gaps for an agent deciding how to invoke 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?

Schema description coverage is 0% across 4 parameters, so the description must compensate and largely does not. Only min_impressions gets meaning ('Filters to queries with at least min_impressions total impressions to exclude noise'); days, site, and engine are left completely undefined.

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+resource statement — 'Detect queries where multiple pages compete for the same ranking slot' — which is precise about what is computed. It is clearly distinct from siblings like quick_wins or seo_striking_distance, though it never names or contrasts with any of them.

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 agent infers you run this when investigating keyword cannibalization. There is no explicit when-to-use statement, no prerequisites, and no routing against adjacent diagnostic tools such as page_health_score or content_quality.

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

seo_lost_queriesB

Find queries that had significant clicks previously but now have 80%+ fewer clicks.

Only queries with at least 5 clicks in the previous period are included to filter noise. Note: uses date.today() without a GSC reporting lag, so the most recent 2-3 days of the current period may include incomplete data and produce false positives.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes
engineNogoogle

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden and does well by disclosing the 80% threshold, the 5-click noise filter, and the GSC reporting-lag caveat that can cause false positives. It omits any mention of required permissions or scope constraints, but the data-reliability context is valuable.

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

Conciseness5/5

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

The description is three sentences, each earning its place: purpose first, filter second, caveat third. It is front-loaded, specific, and free of redundancy.

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

Completeness2/5

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

Given three parameters with zero schema descriptions and no annotations, the description should explain parameter semantics but does not. While it covers purpose and behavioral caveats adequately and an output schema exists for return values, the complete omission of parameter information leaves a significant gap.

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

Parameters1/5

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

Schema description coverage is 0% for all three parameters (site, days, engine), and the description adds no information about what any parameter means, their formats, or allowed values. For a tool with multiple undocumented parameters, the description completely fails to compensate.

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 ('Find queries') and adds a precise condition ('80%+ fewer clicks'), making the tool's function clear. However, it does not explicitly differentiate itself from similar siblings like traffic_drops or quick_wins, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies usage for finding lost queries and includes filter criteria (at least 5 clicks) and a data caveat, but it never states when to use this tool versus alternatives or when not to use it. Guidance is therefore implied rather than explicit.

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

seo_striking_distanceB

List queries ranking between positions 8-15, sorted by impressions descending.

These are the best candidates for ranking improvement: close enough to page 1 that targeted content or link optimisation can move them into top positions.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes
engineNogoogle
min_impressionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses the result-set definition (positions 8-15, sorted by impressions desc), which is useful, but says nothing about result limits, pagination, or whether the position band is fixed versus configurable. An output schema exists, so return shape is reasonably covered elsewhere.

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 concrete scope (position range + sort) front-loaded before the rationale. Efficient and easy to scan, though the second sentence is motivational padding rather than operative information.

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

Completeness3/5

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

An output schema exists so return values need not be explained, and the core filter is stated. But with 0% parameter coverage and no differentiation from quick_wins, an agent lacks enough to confidently choose and configure this 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% and none of the four parameters (days, site, engine, min_impressions) are mentioned or explained in the description. The 8-15 range it does describe is a hardcoded output filter, not a parameter, so the description adds essentially no parameter-level meaning over the bare 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 verb (list) and resource (queries) with an explicit position band (8-15) and sort order, so the agent knows exactly what comes back. However, it never distinguishes itself from the very close sibling quick_wins, which plausibly returns the same 'striking distance' concept, leaving ambiguity about which tool to pick.

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 explains the analytical intent ('best candidates for ranking improvement'), which implies when the tool is useful. But it gives no explicit when-to-use versus alternatives and does not address the overlap with quick_wins or get_advanced_search_analytics, so the selection guidance is only implied.

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

sitemap_auditA

Fetch a sitemap and compare its URLs with pages visible in Search Analytics.

Handles both regular sitemaps () and sitemap index files (), with one level of recursion for sitemap indexes. Uses defusedxml for safe XML parsing (prevents XXE and billion-laughs attacks from untrusted external XML).

Search Analytics is not an indexation inventory: a page without search data can still be indexed. The original urls_in_gsc, urls_missing_from_gsc, missing_sample and verdict fields are retained for compatibility, but only describe Search Analytics visibility. Prefer the explicit visibility fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYes
sitemap_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and discloses meaningful traits: it handles both urlset and sitemapindex, recurses one level, uses defusedxml to prevent XXE and billion-laughs attacks, and clarifies that retained legacy fields only describe Search Analytics visibility. It does not mention auth or rate limits, but the safety and semantic caveats are substantial.

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 purpose is front-loaded and the caveats are clearly separated into paragraphs. It is somewhat long and includes legacy field details, but those details help prevent misinterpretation of the output.

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

Completeness4/5

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

Given a complex audit tool with no annotations and an output schema that handles return values, the description is largely complete on behavior and caveats. Its main omissions are parameter semantics and explicit routing to alternatives, but the operational context and safety notes make it usable.

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

Parameters2/5

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

Schema description coverage is 0% and neither required parameter has a schema description. The description does not explain what 'site' or 'sitemap_url' should contain, what format they take, or how they relate to Search Analytics, so it fails to compensate for the schema gap beyond the intuitive parameter names.

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: fetches a sitemap and compares its URLs with pages visible in Search Analytics. It distinguishes the operation from sibling tools like list_sitemaps and sitemaps_get by describing an audit/comparison rather than simple listing or retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies usage for sitemap-vs-Search-Analytics visibility comparison and warns that Search Analytics is not an indexation inventory, but it does not explicitly say when to use this tool versus alternatives such as check_indexing_issues, inspect_url, or list_sitemaps.

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

sitemaps_deleteA

Delete a submitted sitemap from a GSC property.

Requires the URL to end with '.xml' or contain '/sitemap' as a safety guard against accidental deletion. Removes the entry from GSC tracking only; does not delete the sitemap file.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYes
sitemap_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so description bears full burden. Discloses the safety guard (URL validation), the destructive scope (removes from tracking only), and that the actual file is not deleted. This goes beyond the schema's parameter types.

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

Conciseness5/5

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

Three short sentences, each adding distinct value: purpose, safety guard, and limitation. Efficiently front-loaded with the core action.

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

Completeness4/5

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

Given the tool's simplicity (two required params, destructive but safe) and the presence of an output schema (not shown), the description covers the essential behavior, safety, and scope. Could mention site format (e.g., URL format for GSC property) but overall complete.

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

Parameters3/5

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

Schema description coverage is 0%, so description must add meaning. For 'sitemap_url', it adds validation rule (ends with .xml or contains /sitemap). For 'site', no extra info is provided, leaving its semantics implicit.

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

Purpose5/5

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

The description explicitly states 'Delete a submitted sitemap from a GSC property', which is a clear verb+resource combination. It distinguishes this tool from siblings like submit_sitemap (add) and list_sitemaps (list) by focusing on deletion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Provides context for safe usage: requires URL to end with '.xml' or contain '/sitemap' as a safety guard. Also clarifies what is not affected: 'Removes the entry from GSC tracking only; does not delete the sitemap file.' Does not explicitly state when not to use or alternatives, but the guard and limitation are clear.

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

sitemaps_getA

Get details for a specific sitemap already submitted to a GSC property.

Returns content type counts (URLs, images, videos), error and warning counts, and status flags.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYes
sitemap_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations provided, the description adequately discloses that this is a read operation returning specific data. It does not state side effects, authentication, or error handling, but for a simple GET tool, the behavioral insight is sufficient.

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

Conciseness5/5

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

The description is two concise sentences. The first sentence states the purpose, and the second lists the return fields. There is no wasted verbiage, and the most critical information is front-loaded.

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

Completeness3/5

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

Given the presence of an output schema, the description adequately covers return values but omits parameter explanations. For a simple tool with two required params, this lack of parameter documentation leaves a gap in completeness.

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

Parameters1/5

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

Schema description coverage is 0%, and the description fails to explain the meaning or format of the two required parameters ('site' and 'sitemap_url'). The field names alone may not be sufficiently self-explanatory, especially for an agent.

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

Purpose5/5

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

The description clearly states the tool retrieves details for a specific sitemap, distinguishing it from sibling tools like list_sitemaps (which lists all sitemaps) and sitemap_audit (which performs broader analysis). It specifies the return data: content type counts, error/warning counts, and status flags.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies usage context by stating 'already submitted to a GSC property,' but it does not explicitly compare to alternatives or provide when-not-to-use guidance. No exclusions or sibling tool differentiation are mentioned.

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

submit_batchA

Submit multiple URLs to the Google Indexing API in HTTP batches of 100.

Returns per-URL results, total submitted/error counts, and remaining daily quota. Daily limit is 200 requests total. A quota_warning is added to the response when usage exceeds 180. url_type: 'URL_UPDATED' (default) or 'URL_DELETED'.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYes
url_typeNoURL_UPDATED

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

No annotations provided, but the description fully discloses behavior: batching mechanism, daily quota limits, optional url_type with default, and response contents (per-URL results, counts, quota warning).

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?

Very concise: three sentences covering action, return details, quota, and default parameter values. No fluff, every sentence adds value.

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

Completeness5/5

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

Despite having an output schema, the description still adds value by summarizing returns (per-URL results, counts, quota remaining) and the quota_warning condition. The tool is moderately complex with two parameters, and the description covers all essential aspects without gaps.

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 0%, so description carries full burden. It explains the 'urls' parameter as a batch of URLs, and clarifies the 'url_type' parameter values (URL_UPDATED default, URL_DELETED) and its purpose.

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

Purpose5/5

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

The description clearly states the verb 'submit', resource 'multiple URLs', and scope 'HTTP batches of 100'. It distinguishes from the sibling 'submit_url' by explicitly mentioning batching and multiple URLs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

Provides important usage constraints: daily limit of 200 requests, batch size of 100, and a warning threshold. Does not explicitly tell when to use this versus the single URL tool, but the mention of batching implies use for multiple URLs.

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

submit_sitemapB

Submit a new sitemap URL to a GSC property. If already submitted, GSC updates the existing entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYes
sitemap_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description only discloses that already-submitted sitemaps are updated. No mention of permissions, rate limits, or side effects, leaving significant 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.

Conciseness5/5

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

Two concise sentences, front-loaded with the primary action. No redundancy.

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

Completeness2/5

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

Despite having an output schema and low complexity, the description omits parameter formats, prerequisites, and error conditions, making it insufficient for practical agent use.

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

Parameters1/5

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

Schema coverage is 0% and the description does not clarify the 'site' or 'sitemap_url' parameters beyond their names. No hints about format (e.g., 'sc-domain:example.com' for site).

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

Purpose5/5

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

The description clearly states the action ('submit') and resource ('sitemap URL') and target ('GSC property'), and distinguishes from siblings like 'submit_url' and 'sitemaps_delete' by specifying the scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies when to use (submitting new sitemaps) and mentions update behavior, but lacks explicit guidance on when not to use or alternatives like 'submit_url'.

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

submit_urlA

Submit a single URL to the Google Indexing API for crawl notification.

url_type must be 'URL_UPDATED' (page added or changed, default) or 'URL_DELETED' (page removed). Requires a service account with Indexing API access — OAuth is not sufficient. Transient 429/5xx errors are retried automatically (up to 3 times). Credential errors and non-retryable failures propagate to the caller.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
url_typeNoURL_UPDATED

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully covers behavioral traits: required authentication (service account), retry policy (up to 3 times), and error propagation. This provides essential operational context beyond the schema.

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

Conciseness5/5

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

Three sentences, front-loaded with purpose, concise with no fluff. Each sentence adds necessary information.

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

Completeness5/5

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

For a simple tool with two parameters and an output schema, the description covers purpose, auth, retry, and error handling. Output schema handles return values, so description is complete.

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

Parameters4/5

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

Schema has 0% description coverage. Description adds meaning by explaining url_type values and their meanings, and implicitly defines url. Partially compensates for missing schema descriptions.

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

Purpose5/5

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

The description clearly states the tool submits a single URL to the Google Indexing API for crawl notification, with specific verb and resource, distinguishing it from batch submission and other siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description implies use for single URL submissions by specifying 'single URL', but does not explicitly mention alternatives like 'submit_batch' for multiple URLs. Context is clear but lacks direct comparison.

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

traffic_dropsA

Find queries whose clicks dropped compared to the previous equally-sized period.

Each result includes a diagnosis: 'ranking_loss' (position degraded by more than 2), 'ctr_collapse' (CTR fell more than 30%), or 'demand_decline' (impressions also fell). Note: uses date.today() without a GSC reporting lag, so the most recent 2-3 days may be incomplete.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes
engineNogoogle

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the full disclosure burden and does substantial work: it defines the three diagnosis values and their exact thresholds ('position degraded by more than 2', 'CTR fell more than 30%', 'impressions also fell') and warns that recent 2-3 days may be incomplete due to the missing GSC reporting lag. It omits any auth or scope requirements, but the output semantics and data-freshness caveat are unusually informative.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the core purpose followed by output taxonomy and then the critical caveat. Every sentence adds distinct information with no filler.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the diagnosis taxonomy covers the interesting output semantics. However, with 0% parameter coverage and no annotations, the definition leaves the calling contract (what site/engine values are valid, how days scopes the comparison) under-specified.

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

Parameters2/5

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

Schema description coverage is 0% and none of the three parameters (site, days, engine) are named or explained in the description. 'Equally-sized period' hints at how days is interpreted, but the agent gets no guidance on site formatting, engine options, or valid day ranges, so the description 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?

Names a specific verb and resource ('find queries whose clicks dropped') plus the exact comparison basis ('compared to the previous equally-sized period'), so the agent knows precisely what the tool computes. It does not differentiate itself from similar siblings like compare_search_periods, analytics_anomalies, or traffic_health_check, which keeps it out of the top band.

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 drop-detection framing implies the use case (diagnosing traffic declines per query), but there is no explicit when-to-use statement, no exclusion criteria, and no pointer to the competing period-comparison or anomaly tools in the sibling set. Usage is inferable but not guided.

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

traffic_health_checkA

Compare total GSC clicks with total GA4 organic sessions to detect tracking gaps.

Fetches aggregate GSC clicks (no page dimension) and sums all organic sessions from GA4. The ratio ga4_sessions / gsc_clicks indicates tracking health:

  • "no_gsc_data" : zero GSC clicks (ratio is None, nothing to compare)

  • "tracking_gap" : ratio < 0.6 (GA4 records far fewer sessions than GSC clicks)

  • "filter_issue" : ratio > 1.3 (GA4 records more sessions than GSC clicks)

  • "healthy" : 0.6 <= ratio <= 1.3

Boundaries 0.6 and 1.3 are inclusive of the healthy range (strict < and >). GA4 is queried with limit=10000 to avoid under-counting sessions on large sites. hostname and country narrow the GA4 query to a specific host or country.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
siteYes
countryNo
hostnameNo
property_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description handles transparency well: it details the ratio calculation, the four outcome categories with their thresholds (including inclusivity), and mentions the GA4 query limit of 10000 to avoid undercounting. It also notes that hostname and country narrow the query. This gives a clear behavioral model, though it could mention error handling or rate 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?

The description is well-structured: it starts with a clear purpose, then explains the ratio and outcomes with examples. While slightly long, each sentence adds necessary information. The bullet list of outcomes is clear but could be condensed slightly.

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

Completeness4/5

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

Given the tool's complexity, the description covers the main behavior: the comparison, ratio interpretation, threshold boundaries, and query limit. With the presence of an output schema (context signal), the description's inclusion of outcome categories makes it largely complete. Minor gaps like handling of missing GA4 data or zero sessions are not addressed.

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

Parameters3/5

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

The input schema has 5 parameters with 0% description coverage. The description adds meaning for 'hostname' and 'country' (they narrow the GA4 query) and implies a default 'days' of 28 (via schema default), but it does not explain 'site' or 'property_id'. It partially compensates for the low schema coverage but not fully.

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

Purpose5/5

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

The description clearly states the tool compares total GSC clicks with total GA4 organic sessions to detect tracking gaps. It uses a specific verb and resource, and the unique function distinguishes it from sibling tools like analytics_anomalies or ga4_traffic_sources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies the tool should be used to detect tracking discrepancies between GSC and GA4, but it does not explicitly state when to use or when not to use it, nor does it compare to alternatives. The guidance is adequate but lacks explicit recommendations.

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
    • Addedai_visibility_audit
    • Addedbing_crawl_issues
    • Addedbing_crawl_settings_get
    • Addedbing_crawl_stats
    • Addedbing_feed_details
    • Addedbing_feed_remove
    • Addedbing_feed_submit
    • Addedbing_feeds_list
    • Addedbing_link_counts
    • Addedbing_page_query_stats
    • Addedbing_page_stats
    • Addedbing_query_stats
    • Addedbing_rank_traffic_stats
    • Addedbing_sites_list
    • Addedbing_url_info
    • Addedbing_url_links
    • Addedbing_url_submission_quota
    • Addedbing_url_submit
    • Addedbing_url_traffic
    • Addedbing_urls_submit_batch
    • Changedcheck_alerts1 field changed
      • addedInput schema / properties / engine
        Added value: +{
        +  "default": "google",
        +  "title": "Engine",
        +  "type": "string"
        +}
    • Addedcompare_search_engines
    • Addedcontent_quality
    • Addedcrux_lcp_subparts
    • Addeddrift_baseline
    • Addeddrift_compare
    • Addeddrift_history
    • Addedgbp_deprecation_lint
    • Addedheading_audit
    • Addedhreflang_audit
    • Addedindexnow_submit
    • Addedinternal_links_audit
    • Addedlink_equity_map
    • Addedpage_technical_audit
    • Addedpagespeed_audit
    • Addedparasite_risk
    • Addedpreload_audit
    • Addedprune_candidates
    • Changedquick_wins1 field changed
      • addedInput schema / properties / engine
        Added value: +{
        +  "default": "google",
        +  "title": "Engine",
        +  "type": "string"
        +}
    • Addedschema_generate
    • Changedseo_cannibalization1 field changed
      • addedInput schema / properties / engine
        Added value: +{
        +  "default": "google",
        +  "title": "Engine",
        +  "type": "string"
        +}
    • Changedseo_lost_queries1 field changed
      • addedInput schema / properties / engine
        Added value: +{
        +  "default": "google",
        +  "title": "Engine",
        +  "type": "string"
        +}
    • Changedseo_striking_distance1 field changed
      • addedInput schema / properties / engine
        Added value: +{
        +  "default": "google",
        +  "title": "Engine",
        +  "type": "string"
        +}
    • Changedtraffic_drops1 field changed
      • addedInput schema / properties / engine
        Added value: +{
        +  "default": "google",
        +  "title": "Engine",
        +  "type": "string"
        +}
  2. 7 tool updatesv0.6.2
    • Addedai_overviews_impact
    • Addedcontent_brief
    • Addeddiscover_performance
    • Addedga4_funnel
    • Addednews_performance
    • Addedpage_health_score
    • Addedsearch_type_breakdown
  3. 12 tool updatesv0.5.0
    • Addedcrux_history
    • Addedcrux_page_vitals
    • Changedga4_conversion_funnel6 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Country"
        +}
      • addedInput schema / properties / event_name / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / event_name / type
        Removed value: -"string"
      • addedInput schema / properties / hostname
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Hostname"
        +}
      • addedInput schema / properties / property_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / property_id / type
        Removed value: -"string"
    • Changedga4_organic_landing_pages4 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Country"
        +}
      • addedInput schema / properties / hostname
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Hostname"
        +}
      • addedInput schema / properties / property_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / property_id / type
        Removed value: -"string"
    • Changedga4_page_performance6 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Country"
        +}
      • addedInput schema / properties / hostname
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Hostname"
        +}
      • addedInput schema / properties / page_path / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / page_path / type
        Removed value: -"string"
      • addedInput schema / properties / property_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / property_id / type
        Removed value: -"string"
    • Changedga4_realtime3 fields changed
      • addedInput schema / properties / hostname
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Hostname"
        +}
      • addedInput schema / properties / property_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / property_id / type
        Removed value: -"string"
    • Changedga4_traffic_sources4 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Country"
        +}
      • addedInput schema / properties / hostname
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Hostname"
        +}
      • addedInput schema / properties / property_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / property_id / type
        Removed value: -"string"
    • Changedga4_user_behavior4 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Country"
        +}
      • addedInput schema / properties / hostname
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Hostname"
        +}
      • addedInput schema / properties / property_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / property_id / type
        Removed value: -"string"
    • Changedpage_analysis4 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Country"
        +}
      • addedInput schema / properties / hostname
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Hostname"
        +}
      • addedInput schema / properties / property_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / property_id / type
        Removed value: -"string"
    • Addedschema_validate
    • Addedsitemap_audit
    • Changedtraffic_health_check4 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Country"
        +}
      • addedInput schema / properties / hostname
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Hostname"
        +}
      • addedInput schema / properties / property_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / property_id / type
        Removed value: -"string"
  4. 8 tool updatesv0.4.2
    • Changedga4_conversion_funnel1 field changed
      • addedInput schema / properties / property_id
        Added value: +{
        +  "default": null,
        +  "title": "Property Id",
        +  "type": "string"
        +}
    • Changedga4_organic_landing_pages1 field changed
      • addedInput schema / properties / property_id
        Added value: +{
        +  "default": null,
        +  "title": "Property Id",
        +  "type": "string"
        +}
    • Changedga4_page_performance1 field changed
      • addedInput schema / properties / property_id
        Added value: +{
        +  "default": null,
        +  "title": "Property Id",
        +  "type": "string"
        +}
    • Changedga4_realtime1 field changed
      • addedInput schema / properties / property_id
        Added value: +{
        +  "default": null,
        +  "title": "Property Id",
        +  "type": "string"
        +}
    • Changedga4_traffic_sources1 field changed
      • addedInput schema / properties / property_id
        Added value: +{
        +  "default": null,
        +  "title": "Property Id",
        +  "type": "string"
        +}
    • Changedga4_user_behavior1 field changed
      • addedInput schema / properties / property_id
        Added value: +{
        +  "default": null,
        +  "title": "Property Id",
        +  "type": "string"
        +}
    • Changedpage_analysis1 field changed
      • addedInput schema / properties / property_id
        Added value: +{
        +  "default": null,
        +  "title": "Property Id",
        +  "type": "string"
        +}
    • Changedtraffic_health_check1 field changed
      • addedInput schema / properties / property_id
        Added value: +{
        +  "default": null,
        +  "title": "Property Id",
        +  "type": "string"
        +}
  5. 32 tool updatesv0.4.1
    • First observedanalytics_anomalies
    • First observedbatch_url_inspection
    • First observedcheck_alerts
    • First observedcheck_indexing_issues
    • First observedcompare_search_periods
    • First observedga4_conversion_funnel
    • First observedga4_organic_landing_pages
    • First observedga4_page_performance
    • First observedga4_realtime
    • First observedga4_traffic_sources
    • First observedga4_user_behavior
    • First observedget_advanced_search_analytics
    • First observedget_capabilities
    • First observedget_performance_overview
    • First observedget_search_analytics
    • First observedget_search_by_page_query
    • First observedget_site_details
    • First observedinspect_url
    • First observedlist_properties
    • First observedlist_sitemaps
    • First observedpage_analysis
    • First observedquick_wins
    • First observedseo_cannibalization
    • First observedseo_lost_queries
    • First observedseo_striking_distance
    • First observedsitemaps_delete
    • First observedsitemaps_get
    • First observedsubmit_batch
    • First observedsubmit_sitemap
    • First observedsubmit_url
    • First observedtraffic_drops
    • First observedtraffic_health_check

TDQS

C2.6/5.0

Scored across 81 tools

Disambiguation2/5

Many tools overlap closely: get_search_analytics vs get_advanced_search_analytics, quick_wins vs seo_striking_distance, traffic_drops vs seo_lost_queries vs analytics_anomalies, and inspect_url vs batch_url_inspection vs check_indexing_issues. Bing, GA4, and CrUX tools add parallel near-duplicates, making tool selection error-prone despite helpful descriptions.

Naming Consistency3/5

All names use snake_case, but the pattern is mixed: some are verb_noun (list_properties, inspect_url), others are noun phrases (quick_wins, content_quality, schema_validate), and many are grouped by prefixes (bing_, ga4_, crux_, sitemaps_). It is readable but not a single predictable convention.

Tool Count1/5

81 tools is an extreme mismatch for a single MCP server, far beyond the 3-15 well-scoped range. The surface includes many near-duplicates across GSC, Bing, GA4, CrUX, and audit categories, creating high selection and maintenance burden.

Completeness4/5

Coverage is very broad: GSC analytics, indexing, sitemaps, Bing Webmaster tools, GA4, CrUX, on-page audits, schema, drift, and submissions. Minor gaps exist, such as property administration and some provider-specific lifecycle operations, but most core SEO workflows are supported.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    An MCP server that integrates Google Search Console and Google Analytics 4 to provide unified SEO and web traffic analysis. It allows users to fetch search performance data, merge page metrics, and generate automated trend reports or actionable insights through tool calls.
    16
    -
  • A
    license
    B
    quality
    A
    maintenance
    SEO audit and Google Search Console MCP server with 23 tools. Search analytics, URL inspection, Indexing API, Core Web Vitals (CrUX), striking distance keywords, keyword cannibalization detection, branded query analysis, and automated site audits.
    43
    2
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    An MCP server integrating Google Analytics 4, Search Console, and Indexing API, enabling AI agents to run reports, inspect URLs, manage properties, and request indexing.
    16
    231 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for Google Search Console, enabling querying search analytics, URL inspection, sitemap management, and more via natural language.
    895 npm
    2
    MIT