gsc-mcp
This server exposes 43 Google-focused MCP tools for reading private Search Console/GA4/CrUX data, auditing public pages, and submitting guarded indexing or sitemap changes.
Discover capabilities & properties: list all tools (
get_capabilities); list accessible GSC properties and permission levels (list_properties,get_site_details).Search performance analytics: query clicks/impressions/CTR/position by query, page, device, country, or search type (
get_search_analytics,get_performance_overview,compare_search_periods,get_search_by_page_query,get_advanced_search_analytics); detect z-score click anomalies (analytics_anomalies); break down Discover, News, and search-type performance (discover_performance,news_performance,search_type_breakdown); inspect AI Overview searchAppearance rows (ai_overviews_impact).SEO diagnostics: find low-CTR pages in positions 4–15 (
quick_wins), queries 8–15 (seo_striking_distance), declining queries (traffic_drops), lost queries (seo_lost_queries), cannibalization via HHI (seo_cannibalization), and structural risks like traffic concentration (check_alerts).Indexing inspection & submission: check a URL's indexing verdict/canonical state (
inspect_url), batch-inspect up to 10 URLs (batch_url_inspection,check_indexing_issues), and submit single or batched URLs to the Google Indexing API with retry and quota warnings (submit_url,submit_batch).Sitemap management: list, get, submit, delete, and cross-audit sitemaps against 90 days of GSC page rows (
list_sitemaps,sitemaps_get,submit_sitemap,sitemaps_delete,sitemap_audit).GA4 analytics: organic landing pages, traffic sources, page performance, realtime users, device/country/user-type behavior, conversion and event funnels, and multi-step
ga4_funnel(ga4_organic_landing_pages,ga4_traffic_sources,ga4_page_performance,ga4_realtime,ga4_user_behavior,ga4_conversion_funnel,ga4_funnel).Cross-source joins: compare GSC clicks vs GA4 organic sessions (
traffic_health_check), join GSC+GA4 per page by opportunity score (page_analysis), composite 0–100 page health score (page_health_score), and content briefs with question queries (content_brief).Core Web Vitals: current and 40-week historical LCP/INP/CLS/FCP/TTFB via the CrUX API (
crux_page_vitals,crux_history).Public page auditing: fetch any URL and validate JSON-LD schema (
schema_validate).
Note: the README describes a 1.2.0 release with 81 tools (including 19 Bing tools, drift, content/technical audits, and cross-engine comparison), but this server schema only declares 43 tools — no Bing, drift, or extra auditing endpoints are exposed here.
Provides tools for querying Google Analytics 4 data such as organic landing pages, traffic sources, page performance, real-time users, and conversion funnels.
Provides tools for querying search analytics, inspecting URLs, managing sitemaps, submitting URLs for indexing, and running SEO analysis.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gsc-mcpwhich pages are crawled but not indexed?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Search Console MCP
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, |
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 |
| Starts all 96 Google, Bing, GA4, CrUX, IndexNow and technical SEO tools over stdio |
Install for Codex or Claude Desktop | Persistent executable, upgrades, client configuration and verification | |
Develop from the source checkout | Editable install for unreleased changes and local development | |
Run the checkout bounded audit | Checkout environment, explicit request plan and optional native report generation | |
Configure Google access | Service Account or OAuth access to the selected properties | |
Configure Bing access | One account-level key for the verified sites visible to that account | |
Run a first audit | Full audit, health check, page inspection or GA4 analysis prompt | |
Use the shell instead of MCP | 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-toolsFor 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 listUpgrade that installation when a new release is available:
uv tool upgrade gsc-mcp-toolsTo 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-toolsConfigure 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-mcpCRUX_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-toolsThen 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
Sign in to Bing Webmaster Tools and verify every site you want the account to access.
Open the API access settings and generate an API key.
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.Call each Bing tool with its
siteargument, for examplehttps://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_submitcurrently 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.
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.
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 --> CGoogle 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
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 | Bing | |
Raw query, page and date metrics | Supported | Supported within Bing's observed window |
| Supported | Supported with |
| Supported | Supported with |
| Supported | Supported with |
| Supported | Explicit refusal: exact period comparison unavailable |
| Supported | Explicit refusal: bulk page-query dimension unavailable |
Cross-engine query or page comparison | Supported through | 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:
Analyse measured data and state its observed window.
Recommend a change, separating measured facts, derived metrics and recommendations.
Correct the page or feed outside this MCP server.
Submit only after explicit confirmation and same-origin validation.
Verify the returned API status. An accepted request proves neither crawl nor indexation.
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 |
| List all available tools |
Experimental SERP |
| Preview or explicitly capture one Google SERP on a verified free plan; durable attempt limits, no retries or paid fallback |
Experimental SERP |
| Qualify caller-supplied Google SERP JSON offline; retain missing fields and producer feature types |
Properties |
| List all GSC properties |
Properties |
| Get details for a specific property |
Analytics |
| Query search performance data |
Analytics |
| Aggregate totals + top queries |
Analytics |
| Compare explicit equal Google windows with independent bounded page/query/country/device views, coverage and residuals |
Analytics |
| 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 two consecutive periods |
Analytics |
| Performance broken down by page and query |
Analytics |
| Flexible query with custom dimensions and filters |
Analytics |
| Z-score anomaly detection on daily clicks |
Analytics |
| Top pages by impressions in Google Discover |
Analytics |
| Top pages by impressions in Google News |
Analytics |
| Clicks and impressions split across web, Discover, News, image, video |
Analytics |
| Generic Web search appearances; AI exposure unverified, explicit 400/403 limits |
SEO |
| Pages in positions 4-15 with CTR below benchmark |
SEO |
| Declining clicks with metric-based candidate diagnoses, not causal proof |
SEO |
| Traffic concentration risks and ranking opportunities |
SEO |
| Queries in positions 8-15, one push away from page 1 |
SEO |
| Queries split across pages (HHI score); search operators excluded by default since 1.3.1 |
SEO |
| Queries with a click drop >= 80% vs the previous period |
Inspection |
| URL indexing status via URL Inspection API |
Inspection |
| Inspect up to 10 URLs at once |
Inspection |
| Inspect URLs and categorize by issue type |
Indexing |
| Request indexing for a single URL |
Indexing |
| Request indexing for multiple URLs (true HTTP batch) |
Sitemaps |
| List submitted sitemaps |
Sitemaps |
| Submit a sitemap URL |
Sitemaps |
| Fetch details for a single sitemap |
Sitemaps |
| Delete a submitted sitemap (with safety check) |
Sitemaps |
| Fetch a sitemap and compare its URLs with 90 days of Search Analytics page rows; does not measure indexation |
GA4 |
| Sessions and engagement for organic landing pages |
GA4 |
| Sessions and conversions by channel, source and medium |
GA4 |
| Recorded assistant-attributed visits, exact source rules and coverage-gated shares |
GA4 |
| 7 metrics per page path, optional CONTAINS filter |
GA4 |
| Active users right now by screen, country and device |
GA4 |
| Device, country and user-type breakdowns in one batch call |
GA4 |
| Converting pages and event counts, optional event filter |
GA4 |
| Multi-step funnel report via GA4 v1alpha RunFunnelReport, conversion rate per step |
Cross |
| Equal requested dates, zero/empty/unavailable states and coverage-gated heuristic ratios |
Cross |
| GSC+GA4 join per page with opportunity score, sorted by priority |
Cross |
| Composite 0-100 score (GSC 30 pts, GA4 25 pts, CrUX 25 pts, schema 20 pts), graceful degradation per component |
Cross |
| Per-page top queries, question queries, and GA4 session data for content planning |
CrUX |
| Real-user Core Web Vitals (LCP, INP, CLS, FCP, TTFB) for a URL from the Chrome UX Report API |
CrUX |
| Historical Core Web Vitals trend (weekly data points) for a URL |
Technical |
| Fetch any public URL and validate its JSON-LD schemas; suggests missing schemas by URL pattern |
Technical |
| 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 |
| Optional site-owned SiteOne storage, bounded details, exact-URL reconciliation and explicit cleanup |
Local comparisons |
| Exact observed inventory membership and compatible imported field differences; no deletion/indexing inference |
Inspection evidence |
| Keep supplied per-URL inspection, HTML, GSC, inventory and log observations separate with unknown current indexing |
Technical |
| Since 1.4.0: preview bounded caller-supplied SiteOne JSON in memory; no crawl, file/network access, secrets or GSC join |
Technical |
| Generate a Schema.org JSON-LD block for Reservation, OrderAction, DiscussionForumPosting, or ProfilePage |
Drift |
| Capture a baseline snapshot of a page (title, H1-H3, schema, canonical, CWV) stored locally in SQLite |
Drift |
| Diff a live fetch against the stored baseline and apply 17 rules (8 CRITICAL, 6 WARNING, 3 INFO) |
Drift |
| List previous comparison runs for a URL with triggered findings per run |
Editorial |
| 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 |
| Since 1.4.0: protected literals and qualifier review candidates; semantic fidelity and factual truth remain unassessed |
Follow-up |
| Since 1.4.0: declared event and descriptive Google before/after evidence; no persistence or causal effect |
Content |
| Fetch a URL for local filler, density, repetition and thin-content heuristics; optional main-content profile requires independent evaluation |
Content |
| Fetch a URL and validate its hreflang implementation: x-default, ISO 639-1 codes, region codes, self-ref, protocol consistency |
Content |
| Fetch a URL and audit meta tags (title, description, canonical, robots), viewport, HTML lang, security headers, robots.txt Googlebot access |
Content |
| Audit Speculation Rules, bfcache eligibility, and LCP preload signals: inline speculationrules blocks, Speculation-Rules header, link preload tags, deprecated prerender, cache-control blockers |
CrUX |
| Decompose LCP into four subparts (TTFB, resource load delay, duration, render delay) with dominant phase identification for targeted CWV remediation |
Indexing |
| Submit URLs to IndexNow (Bing, Yandex, Seznam, Naver) via one POST; SSRF-safe URL validation, skipped-invalid count, ok/partial/error verdict |
SEO |
| 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 |
| Check robots.txt and llms.txt; version 1.3.1 checks 10 agents, including ClaudeBot, Claude-User and Claude-SearchBot |
Technical |
| Scan a page for deprecated Google Business Profile features: .business.site links, Reserve with Google, GBP appointment widgets |
Technical |
| Run a PageSpeed Insights API v5 audit: Lighthouse performance score, Core Web Vitals, top 3 improvement opportunities (requires GOOGLE_API_KEY) |
Content |
| 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 |
| Observe bounded internal destination HTTP statuses and redirect hops while preserving source anchors; no recursive crawl |
Links |
| 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 |
| 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 |
| 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 |
| List sites visible to the Bing account and their observed verified state |
Bing read |
| Query performance in Bing's observed rolling window |
Bing read |
| Page performance in Bing's observed rolling window |
Bing read |
| Query performance for one page |
Bing read |
| Daily clicks and impressions; no rank field is inferred |
Bing read |
| Dated crawl counters in the requested local window |
Bing read |
| Crawl issue flags; non-empty live item shape remains unverified |
Bing read |
| Observed crawl-rate setting from the partial contract |
Bing read |
| Observed URL fields and last crawl date, without an indexation verdict |
Bing read |
| URL clicks, impressions and derived CTR |
Bing read |
| List registered Bing feeds |
Bing read |
| Return every observed feed-detail row |
Bing read |
| Return quota integers with total-versus-remaining semantics marked unknown |
Bing read |
| Backlink count page; nested runtime shape remains unverified |
Bing read |
| Backlinks for one URL; nested runtime shape remains unverified |
Bing write |
| Submit one same-origin URL; acceptance does not prove indexation |
Bing write |
| Validate a batch, then refuse it while quota semantics remain unknown |
Bing write |
| Submit one same-origin feed without claiming crawl or indexation |
Bing write |
| Remove a registered same-origin feed after explicit |
Cross-engine |
| 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 100Bing 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 queryBING_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-browserExit codes: 0 success, 1 Google API error, 2 credential/config error or invalid arguments.
Quota note:
submit-batchandsubmit-urluse the Google Indexing API (200 req/day limit). Eachgsc-clicall starts a fresh process, so cross-invocation quota tracking is not implemented. The@with_retrydecorator 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 |
|
| Weekly traffic recap, period-over-period summary |
|
| Sudden or sustained drop in clicks or impressions |
|
| Observed content optimization candidates; no predicted gains |
|
| Multiple pages competing for the same query |
|
| Crawl errors, pages not indexed, coverage gaps |
|
| Sitemap submission and sampled search visibility |
|
| JSON-LD local required-field checks; eligibility unassessed |
|
| Full diagnostic for a single URL |
|
| 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 |
|
| Weekly traffic recap, period-over-period summary |
|
| Sudden or sustained drop in clicks or impressions |
|
| Observed content optimization candidates; no predicted gains |
|
| Multiple pages competing for the same query |
|
| Crawl errors, pages not indexed, coverage gaps |
|
| Sitemap submission and sampled search visibility |
|
| JSON-LD local required-field checks; eligibility unassessed |
|
| Full diagnostic for a single URL |
|
| Inspect generic Web search appearances without AI attribution |
|
| Heading hierarchy, H1 uniqueness, title overlap and section density |
|
| Link placement by page zone, anchors and footer-only targets |
|
| Site-wide link flow crossed with Search Console positions |
|
| One-page audit combining technical, content, link, schema and search data |
|
| Versioned SiteOne inventories, exact-URL joins and explicit local retention |
|
| Bounded local server access logs, HTTP status and declared bot evidence |
|
| Review a module for clean code violations before PR |
|
| Step-by-step workflow to add a new MCP tool |
|
| Run the pytest suite with automatic failure diagnosis |
Documentation
Need | Document |
Install, upgrade and configure an MCP client | |
Configure Google APIs and authentication | |
Configure Bing Webmaster Tools | |
Run the first audit | |
Compare search changes, follow a declared edit and check link destinations | |
Review a draft or compare a proposed rewrite | |
Understand the modules and data flow | |
Run the optional source-only native audit | |
Compare extraction profiles offline | |
Supply independent human cases and frozen targets | |
Review delivered source limits and remaining inputs | |
Review Bing evidence and runtime limits | |
Verify SEO expert feedback fixes and catalogue measurements | |
Review local audit validation and its evidence limits | |
Review product designs and implementation plans | |
Track releases and current changes | |
Navigate the public site and review dated updates | |
Give the repository to an AI assistant |
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 tasksadr-index.yaml: 16 Architecture Decision Records reconstructed from git historycode-map.yaml: full module/test/dependency mapconstraints.yaml: forbidden patterns (no stdlib XML on external input, no pickle for tokens, no unvalidated URLs in sitemap fetch...) and required patternstech-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 listThe 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/ -vThe 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 |
|
Token storage | pickle | pickle | 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 + |
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 fromrequeststohttpx.JSON-LD generators (
schema_generatetool): the four high-leverage schema types (Reservation, OrderAction, DiscussionForumPosting, ProfilePage) adapted fromscripts/schema_generate.py.Schema templates (
src/gsc_mcp/data/schema_templates.json): 11 JSON-LD placeholder templates (VideoObject, ProductGroup, ItemList, Certification, etc.) fromschema/templates.json.SEO drift monitoring (
src/gsc_mcp/tools/drift.py): the 17-rule diff methodology fromscripts/drift_baseline.pyandscripts/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 toolsai_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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| threshold | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | ||
| urls | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | ||
| feed_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | ||
| confirm | No | ||
| feed_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | ||
| feed_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_link_countsC
Return one Bing page of backlink counts from a synthetic shape.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| site | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 does not state that this is a read-only operation, whether it needs Bing auth, rate limits, or what "synthetic shape" implies (possibly non-live/sample data, which is a significant caveat left unexplained).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence, so it is not bloated. However, "from a synthetic shape" spends the one sentence's budget on confusing filler rather than front-loading the useful scoping information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out, which lightens the burden. But with no annotations and 0% parameter coverage, the description should still disclose read-only status, data provenance (the "synthetic" caveat), and pagination semantics; it omits all of these.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters (page, site) and does not. "One Bing page" loosely maps to the page param, but there is no explanation of what a page contains, zero-vs-one-based paging, or what format the site argument expects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a verb ("Return") and resource ("Bing page of backlink counts"), which is better than a tautology. But "from a synthetic shape" is opaque jargon that does not clarify what data is actually returned, and there is no differentiation from close siblings like bing_url_links or link_equity_map. An agent cannot confidently tell which of these to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not-to-use, or alternative tool named. "One Bing page" hints at pagination but gives no guidance on how this differs from bing_url_links or bing_url_info. The agent is left to infer usage entirely.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| page | Yes | ||
| site | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| site | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_url_linksB
Return one Bing page of backlinks for the requested target URL.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| page | No | ||
| site | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 operation via 'Return' and scopes the output to 'one Bing page,' which hints at pagination behavior, but it does not disclose authentication requirements, rate limits, or any side effects. This is adequate but leaves meaningful behavioral gaps for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently communicates the core operation without redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, with no annotations and 0% schema description coverage, the description should do more to explain parameters and usage. It covers the basic purpose but leaves the required 'site' parameter and any usage context unexplained, making it only partially complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that 'url' is the target URL and that 'page' implies pagination ('one Bing page'), but it completely omits any explanation of the required 'site' parameter, which is essential for invocation. Coverage is partial and insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Return') and resource ('Bing page of backlinks for the requested target URL'), making the tool's function clear and distinguishable from sibling tools like bing_link_counts. It does not explicitly reference alternatives, but the resource and scope are precise enough for an agent to select it correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as bing_link_counts or bing_url_info. It only states what it returns, leaving the agent to infer the appropriate context without any exclusions or prerequisites.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | ||
| urls | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| site | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| site | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| engine | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | ||
| urls | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| limit | No | ||
| bing_site | Yes | ||
| dimension | No | query | |
| google_site | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| page_url | Yes | ||
| property_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| metric | No | largest_contentful_paint | |
| form_factor | No | ALL_FORM_FACTORS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| form_factor | No | PHONE |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| form_factor | No | ALL_FORM_FACTORS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| skip_cwv | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| skip_cwv | No | ||
| baseline_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | ||
| end_date | No | today | |
| hostname | No | ||
| event_name | No | ||
| start_date | No | 28daysAgo | |
| property_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| steps | Yes | ||
| end_date | Yes | ||
| start_date | Yes | ||
| property_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| country | No | ||
| end_date | No | today | |
| hostname | No | ||
| start_date | No | 28daysAgo | |
| property_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | ||
| end_date | No | today | |
| hostname | No | ||
| page_path | No | ||
| start_date | No | 28daysAgo | |
| property_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| hostname | No | ||
| property_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | ||
| end_date | No | today | |
| hostname | No | ||
| start_date | No | 28daysAgo | |
| property_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | ||
| end_date | No | today | |
| hostname | No | ||
| start_date | No | 28daysAgo | |
| property_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | ||
| row_limit | No | ||
| data_state | No | ||
| dimensions | No | ||
| search_type | No | web | |
| date_range_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| row_limit | No | ||
| dimensions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| row_limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| site | Yes | ||
| urls | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| site | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
internal_links_auditA
Audit the internal linking of a single page, weighted by where each link sits.
Extracts every and tags it with its semantic zone (body, nav, footer, header, aside). A link in the body carries editorial weight; the same link in the footer or main nav is structural and counts for much less.
Reports internal targets that appear ONLY in demoted zones (the highest-value finding), generic anchor text, internal links marked nofollow, and self-links.
No Google API calls. No authentication required. Verdicts: healthy | issues_found | fetch_error.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 explains the extraction mechanism (<a href>), the zone-tagging and weighting model (body vs nav/footer/header/aside), what it reports (demoted-zone-only targets, generic anchor text, nofollow internal links, self-links), that no credentials or Google API are needed, and the enumerated verdicts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short, front-loaded paragraphs; the core action leads, weighting logic follows, and findings/verdicts close. Every sentence carries information and none repeat the schema or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description covers method, weighting, findings, and auth requirements completely. The only gap is the absence of guidance on when to prefer this over sibling link tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single 'url' parameter is undocumented in the schema. The description implies a single page target ('a single page') but adds no format details (absolute vs relative, required protocol), so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with clear scope: 'Audit the internal linking of a single page.' The 'single page' scoping implicitly separates it from site-wide siblings like link_equity_map and prune_candidates, but no sibling is named explicitly, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose (audit one page's internal links), and 'No Google API calls. No authentication required.' usefully signals zero-setup invocation. However there is no explicit when-to-use/when-not guidance and no routing to the adjacent link_equity_map or prune_candidates tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_equity_mapA
Map internal link flow across a site's most-visible pages and cross it with GSC.
Takes the pages with the most impressions over days, crawls each one, and
builds a directed graph of internal links tagged by the zone they sit in.
Joining that graph to the Search Console numbers answers the question a link
audit on a single page cannot: which pages are close to page one and receive
no editorial link at all.
Outputs, in descending order of how actionable they are:
underlinked_striking_distance: positions 11-20 with no body inbound link. Placing one internal link here is the cheapest ranking move available.
orphan_candidates: pages with impressions and no body inbound link.
footer_only_targets: linked from nav/footer/aside and from no page body.
hub_pages: the pages distributing the most body links.
Coverage is bounded by max_pages (hard ceiling 100). Only crawled pages act as link sources, so "orphan" means "no link found among the pages crawled", never a site-wide certainty. pages_crawled and pages_failed are always reported.
Verdicts: healthy | issues_found | no_data.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| max_pages | No | ||
| delay_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and handles it well: it discloses the hard ceiling (max_pages 100), the crawl scope limitation that makes 'orphan' probabilistic rather than site-wide, and that pages_crawled/pages_failed are always reported. Auth requirements and rate limiting are not addressed, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded topic sentence, then mechanism, then a prioritized output list, then scope caveats and verdicts. Each sentence adds distinct information and the actionability ordering is genuine signal rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so explaining return shape is optional, yet the description still enumerates the output categories and clarifies the limits of the 'orphan' verdict and coverage bounds. The remaining gap is operational context (permissions, runtime expectations for a crawl) rather than anything an agent needs to construct the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must supply all parameter meaning. It defines `days` (impression window) and `max_pages` (hard ceiling of 100), but leaves `site` and `delay_seconds` unexplained beyond their bare names, so half the parameters remain semantically thin.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line states a specific verb and resource ('Map internal link flow across a site's most-visible pages and cross it with GSC') and immediately separates itself from the single-page link audit approach. An agent can distinguish it from internal_links_audit and prune_candidates 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It frames the use case sharply ('answers the question a link audit on a single page cannot: which pages are close to page one and receive no editorial link at all') and orders outputs by actionability, which tells the agent which inputs are worth the crawl cost. It stops short of naming sibling tools or explicit when-not-to-use conditions.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| limit | No | ||
| country | No | ||
| hostname | No | ||
| property_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| site | Yes | ||
| country | No | ||
| hostname | No | ||
| property_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| strategy | No | mobile |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | ||
| urls | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| engine | No | ||
| max_pages | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| engine | No | ||
| min_impressions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| name | No | ||
| text | No | ||
| image | No | ||
| author | No | ||
| same_as | No | ||
| end_time | No | ||
| headline | No | ||
| merchant | No | ||
| provider | No | ||
| job_title | No | ||
| order_url | No | ||
| works_for | No | ||
| order_name | No | Order online | |
| party_size | No | ||
| start_time | No | ||
| description | No | ||
| knows_about | No | ||
| profile_url | No | ||
| schema_type | Yes | ||
| comment_count | No | ||
| customer_name | No | ||
| date_modified | No | ||
| customer_email | No | ||
| date_published | No | ||
| reservation_id | No | ||
| delivery_method | No | ||
| reservation_kind | No | FoodEstablishmentReservation | |
| reservation_for_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| days | No | ||
| site | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| engine | No | ||
| min_impressions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| engine | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| engine | No | ||
| min_impressions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | ||
| sitemap_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | ||
| sitemap_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | ||
| sitemap_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | ||
| url_type | No | URL_UPDATED |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | ||
| sitemap_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| url_type | No | URL_UPDATED |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| engine | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| site | Yes | ||
| country | No | ||
| hostname | No | ||
| property_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
44 tool updates
v1.2.0- Added
ai_visibility_audit - Added
bing_crawl_issues - Added
bing_crawl_settings_get - Added
bing_crawl_stats - Added
bing_feed_details - Added
bing_feed_remove - Added
bing_feed_submit - Added
bing_feeds_list - Added
bing_link_counts - Added
bing_page_query_stats - Added
bing_page_stats - Added
bing_query_stats - Added
bing_rank_traffic_stats - Added
bing_sites_list - Added
bing_url_info - Added
bing_url_links - Added
bing_url_submission_quota - Added
bing_url_submit - Added
bing_url_traffic - Added
bing_urls_submit_batch - Changed
check_alerts1 field changed- added
Input schema / properties / engineAdded value: +{ + "default": "google", + "title": "Engine", + "type": "string" +}
- Added
compare_search_engines - Added
content_quality - Added
crux_lcp_subparts - Added
drift_baseline - Added
drift_compare - Added
drift_history - Added
gbp_deprecation_lint - Added
heading_audit - Added
hreflang_audit - Added
indexnow_submit - Added
internal_links_audit - Added
link_equity_map - Added
page_technical_audit - Added
pagespeed_audit - Added
parasite_risk - Added
preload_audit - Added
prune_candidates - Changed
quick_wins1 field changed- added
Input schema / properties / engineAdded value: +{ + "default": "google", + "title": "Engine", + "type": "string" +}
- Added
schema_generate - Changed
seo_cannibalization1 field changed- added
Input schema / properties / engineAdded value: +{ + "default": "google", + "title": "Engine", + "type": "string" +}
- Changed
seo_lost_queries1 field changed- added
Input schema / properties / engineAdded value: +{ + "default": "google", + "title": "Engine", + "type": "string" +}
- Changed
seo_striking_distance1 field changed- added
Input schema / properties / engineAdded value: +{ + "default": "google", + "title": "Engine", + "type": "string" +}
- Changed
traffic_drops1 field changed- added
Input schema / properties / engineAdded value: +{ + "default": "google", + "title": "Engine", + "type": "string" +}
7 tool updates
v0.6.2- Added
ai_overviews_impact - Added
content_brief - Added
discover_performance - Added
ga4_funnel - Added
news_performance - Added
page_health_score - Added
search_type_breakdown
12 tool updates
v0.5.0- Added
crux_history - Added
crux_page_vitals - Changed
ga4_conversion_funnel6 fields changed- added
Input schema / properties / countryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Country" +} - added
Input schema / properties / event_name / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / event_name / typeRemoved value: -"string" - added
Input schema / properties / hostnameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Hostname" +} - added
Input schema / properties / property_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / property_id / typeRemoved value: -"string"
- Changed
ga4_organic_landing_pages4 fields changed- added
Input schema / properties / countryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Country" +} - added
Input schema / properties / hostnameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Hostname" +} - added
Input schema / properties / property_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / property_id / typeRemoved value: -"string"
- Changed
ga4_page_performance6 fields changed- added
Input schema / properties / countryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Country" +} - added
Input schema / properties / hostnameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Hostname" +} - added
Input schema / properties / page_path / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / page_path / typeRemoved value: -"string" - added
Input schema / properties / property_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / property_id / typeRemoved value: -"string"
- Changed
ga4_realtime3 fields changed- added
Input schema / properties / hostnameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Hostname" +} - added
Input schema / properties / property_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / property_id / typeRemoved value: -"string"
- Changed
ga4_traffic_sources4 fields changed- added
Input schema / properties / countryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Country" +} - added
Input schema / properties / hostnameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Hostname" +} - added
Input schema / properties / property_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / property_id / typeRemoved value: -"string"
- Changed
ga4_user_behavior4 fields changed- added
Input schema / properties / countryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Country" +} - added
Input schema / properties / hostnameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Hostname" +} - added
Input schema / properties / property_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / property_id / typeRemoved value: -"string"
- Changed
page_analysis4 fields changed- added
Input schema / properties / countryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Country" +} - added
Input schema / properties / hostnameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Hostname" +} - added
Input schema / properties / property_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / property_id / typeRemoved value: -"string"
- Added
schema_validate - Added
sitemap_audit - Changed
traffic_health_check4 fields changed- added
Input schema / properties / countryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Country" +} - added
Input schema / properties / hostnameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Hostname" +} - added
Input schema / properties / property_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / property_id / typeRemoved value: -"string"
8 tool updates
v0.4.2- Changed
ga4_conversion_funnel1 field changed- added
Input schema / properties / property_idAdded value: +{ + "default": null, + "title": "Property Id", + "type": "string" +}
- Changed
ga4_organic_landing_pages1 field changed- added
Input schema / properties / property_idAdded value: +{ + "default": null, + "title": "Property Id", + "type": "string" +}
- Changed
ga4_page_performance1 field changed- added
Input schema / properties / property_idAdded value: +{ + "default": null, + "title": "Property Id", + "type": "string" +}
- Changed
ga4_realtime1 field changed- added
Input schema / properties / property_idAdded value: +{ + "default": null, + "title": "Property Id", + "type": "string" +}
- Changed
ga4_traffic_sources1 field changed- added
Input schema / properties / property_idAdded value: +{ + "default": null, + "title": "Property Id", + "type": "string" +}
- Changed
ga4_user_behavior1 field changed- added
Input schema / properties / property_idAdded value: +{ + "default": null, + "title": "Property Id", + "type": "string" +}
- Changed
page_analysis1 field changed- added
Input schema / properties / property_idAdded value: +{ + "default": null, + "title": "Property Id", + "type": "string" +}
- Changed
traffic_health_check1 field changed- added
Input schema / properties / property_idAdded value: +{ + "default": null, + "title": "Property Id", + "type": "string" +}
32 tool updates
v0.4.1- First observed
analytics_anomalies - First observed
batch_url_inspection - First observed
check_alerts - First observed
check_indexing_issues - First observed
compare_search_periods - First observed
ga4_conversion_funnel - First observed
ga4_organic_landing_pages - First observed
ga4_page_performance - First observed
ga4_realtime - First observed
ga4_traffic_sources - First observed
ga4_user_behavior - First observed
get_advanced_search_analytics - First observed
get_capabilities - First observed
get_performance_overview - First observed
get_search_analytics - First observed
get_search_by_page_query - First observed
get_site_details - First observed
inspect_url - First observed
list_properties - First observed
list_sitemaps - First observed
page_analysis - First observed
quick_wins - First observed
seo_cannibalization - First observed
seo_lost_queries - First observed
seo_striking_distance - First observed
sitemaps_delete - First observed
sitemaps_get - First observed
submit_batch - First observed
submit_sitemap - First observed
submit_url - First observed
traffic_drops - First observed
traffic_health_check
TDQS
Scored across 81 tools
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.
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.
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.
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
Related MCP Connectors
Read and edit GA4, Search Console and Google Tag Manager from any MCP client. 29 tools.
Hosted MCP server for GA4, Google Ads and Search Console. Google OAuth, nothing to install.
SEO MCP server for keyword research, SERP analysis, audits, and Search Console workflows.
Read-only Google Search Console MCP server for AI assistants.
1
Related MCP Servers
- FlicenseBqualityDmaintenanceAn 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-
- AlicenseBqualityAmaintenanceSEO 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.432MIT
- AlicenseBqualityDmaintenanceAn MCP server integrating Google Analytics 4, Search Console, and Indexing API, enabling AI agents to run reports, inspect URLs, manage properties, and request indexing.16231 npm2MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for Google Search Console, enabling querying search analytics, URL inspection, sitemap management, and more via natural language.895 npm2MIT