Search Console MCP
This server unifies Google Search Console, Bing Webmaster Tools, and Google Analytics 4 into a single AI agent interface, enabling comprehensive SEO and analytics tasks without manual data handling. Capabilities include:
Site & Account Management: List, add, delete, and verify sites; manage multi-account configurations.
Search Analytics: Query clicks, impressions, CTR, position with filters and dimensions; top queries/pages; compare periods and engines; detect trends, anomalies, and traffic drops.
SEO Audits & Opportunities: Automated audits for quick wins, striking distance, cannibalization, low-hanging fruit, lost queries, brand vs. non-brand, and low CTR; generate prioritized recommendations.
URL Inspection & Indexing: Inspect individual or batch URLs for indexing status; submit URLs to Google or Bing (including IndexNow); remove URLs from index; check quotas.
Sitemaps: List, submit, delete, and inspect sitemaps for Google and Bing.
PageSpeed & Core Web Vitals: Run PageSpeed Insights audits; get LCP, FID, CLS, FCP, TTI, TBT scores for mobile/desktop.
GA4 Analytics: Page performance, traffic sources, organic landing pages, ecommerce, real-time users, user behavior, audience segments, conversion funnels; correlate with PageSpeed.
Cross-Platform Analysis: Compare GSC vs GA4 behavior; diagnose tracking issues; opportunity matrix combining GSC, Bing, and GA4 signals; brand and page analysis.
Keyword Research (Bing): Get keyword stats and related keywords.
Utilities & Diagnostics: Validate Schema.org structured data; run connectivity diagnostics; low-level SEO primitives; star the repo.
Enables interaction with Google Search Console to query performance metrics, detect traffic anomalies and trends, identify SEO opportunities like keyword cannibalization, and manage sitemaps and property health checks.
Provides the ability to run PageSpeed audits and analyze Core Web Vitals, allowing for the correlation of site performance scores with search ranking positions.
๐ Search Console MCP
Google Search Console + Bing Webmaster Tools + GA4 + AdSense โ in one context window.
Stop exporting CSVs. Start asking your AI agent questions about your site's traffic, rankings, and revenue.
๐ Docs ยท Quick Start ยท Tools ยท Backward Compatibility ยท Security
โก What's New in v2.1.2
๐ค GenAI Query Insights (
genai_query_insights): Surfaces likely generative-AI / AI-Mode / conversational "fanout" queries across Google and Bing. This is custom heuristic logic โ no official API is provided by Google or Bing for GenAI citation data, so it flags prompt verbs, follow-ups, acknowledgements, and conversational phrasing on the regular query data both engines already return. See docs โ๐ชฒ
analytics_queryfix:rowLimitis now honored instead of being silently ignored (previously always returned up to 1000 rows);limitremains as a backward-compatible alias.
๐ฐ Google AdSense Integration: Earnings reports, payments and account alerts via
setup --engine=adsense. Enabling AdSense requires you to approve a separateadsense.readonlyOAuth scope; your existing GSC, Bing, and GA4 configuration remains unchanged until you opt in.๐ OAuth-only AdSense auth: The AdSense Management API supports user OAuth only โ setup now validates access live and rejects unsupported service-account configs with actionable guidance. Multi-account users get explicit publisher-account selection with full pagination (>100 accounts).
๐
adsense_reportupgrades: CustomstartDate/endDatenow override presetdateRanges, plus a neworderByparameter (-ESTIMATED_EARNINGS) for sorted revenue reports.๐งช End-to-end MCP test suite: The built server binary is now tested over stdio and SSE exactly like an MCP host would drive it โ handshake, tool schemas, error envelopes, and multi-account resource behavior (11 e2e tests wired into CI).
๐ฐ Google AdSense Integration: Earnings reports, payments and account alerts via
setup --engine=adsense. Enabling AdSense requires you to approve a separateadsense.readonlyOAuth scope; your existing GSC, Bing, and GA4 configuration remains unchanged until you opt in.๐ OAuth-only AdSense auth: The AdSense Management API supports user OAuth only โ setup now validates access live and rejects unsupported service-account configs with actionable guidance. Multi-account users get explicit publisher-account selection with full pagination (>100 accounts).
๐
adsense_reportupgrades: CustomstartDate/endDatenow override presetdateRanges, plus a neworderByparameter (-ESTIMATED_EARNINGS) for sorted revenue reports.๐งช End-to-end MCP test suite: The built server binary is now tested over stdio and SSE exactly like an MCP host would drive it โ handshake, tool schemas, error envelopes, and multi-account resource behavior (11 e2e tests wired into CI).
๐ฆ MCPB One-Click Bundle Support (
.mcpb): Drag and drop bundle installation for Claude Desktop.โก Parallel Fetch Engine (
engine: "all"): Multi-engine queries fetch Google, Bing, and GA4 concurrently with 50%+ lower latency.๐ 100% Backward Compatibility: All ~96 legacy tool names continue to work seamlessly via our fallback router. Read Backward Compatibility Guide โ
Related MCP server: searchconsole-mcp
Why this exists
Site data lives in four different silos. Answering one question โ "did my ad revenue drop because of a traffic dip or a lower RPM?" โ usually means logging into four dashboards, exporting four CSVs, and doing VLOOKUPs by hand.
Search Console MCP puts GSC, Bing, GA4, and AdSense behind one set of tools your AI agent can call directly, and does the analysis (cannibalization, anomaly detection, revenue attribution) before the data ever reaches your context window.
Before | After | |
Data | 4 dashboards, manual exports | 1 unified context |
Analysis | Manual VLOOKUPs & pivot tables | Deterministic SEO + revenue math, server-side |
Accounts | Constant re-login | 20+ accounts, auto-resolved per site |
Insight | Raw rows, agent guesses | Curated signals (opportunity scores, anomalies) |
โก Quick Start
npx search-console-mcp setupThis opens your browser, authorizes your Google account, and stores your credentials securely (see Security). Then add it to your MCP client config (Claude Desktop, Cursor, Antigravity, etc.):
{
"mcpServers": {
"search-console": {
"command": "npx",
"args": ["search-console-mcp"]
}
}
}Restart your client โ and try one of the prompts below.
๐ฌ Try it
Paste these straight into your agent:
"My traffic dropped this week vs. last. Find exactly when it started and which pages are responsible."
"Find keywords for example.com ranking positions 8โ15 with 1,000+ impressions โ my best quick wins."
"Check for keyword cannibalization โ are two of my pages competing for the same query?"
"Run
seo_auditon my top pages: which have high search visibility but poor CTR?"
"Run a full SEO health check (
site_health_check), segmented by Brand vs Non-Brand.""Fetch my top 5 pages by impressions and run
pagespeed_analyzeโ any correlation with declining rankings?""Compare Google vs Bing performance for the last 30 days (
compare_engines) โ where is Bing winning?""Submit my latest URLs to Google and IndexNow using
indexing_submitwithmethod: "index_now"."
๐ Connect your accounts
Platform | Method | Setup |
Google Search Console | OAuth (recommended) |
|
Google Search Console | Service Account | Set |
Bing Webmaster Tools | API Key |
|
Google Analytics 4 | Service Account |
|
Google AdSense | OAuth (read-only) |
|
Manage everything from the CLI:
npx search-console-mcp accounts list
npx search-console-mcp accounts add-site --account=you@company.com --site=example.com
npx search-console-mcp accounts remove --account=you@company.comWhen your agent queries a site, the server auto-resolves which account owns it โ no manual switching. Multi-account docs โ
AdSense cannot use service accounts, and config files are machine-encrypted โ so authorize once on any machine with a browser and transfer the grant:
# 1. On your laptop (after setup --engine=adsense):
npx search-console-mcp adsense-export
# 2. On the server (prints a ready-to-run command on step 1):
npx search-console-mcp adsense-import --token='...' --publisher-id='accounts/pub-...'The token is stored encrypted on the server and auto-refreshes โ no browser needed again. Setup over SSH also works directly: when no browser is detected, setup prints the authorization URL plus ssh -L 3000:localhost:3000 port-forward instructions instead of failing.
๐ฅ๏ธ Run tools from the CLI
Search Console MCP also exposes registered MCP tools as direct CLI commands. Use the run subcommand to list tools, inspect tool-specific arguments, and print results as JSON, CSV, or an ASCII table:
# List registered tools
npx search-console-mcp run --help
# Show options for one tool
npx search-console-mcp run analytics_query --help
# Run an SEO audit with JSON output
npx search-console-mcp run seo_audit --siteUrl=https://example.com --type=quick_wins
# Print array results as CSV or a table
npx search-console-mcp run analytics_query --siteUrl=https://example.com --startDate=2026-06-01 --endDate=2026-06-30 --dimensions=date,query --format=csv
npx search-console-mcp run sites_list --engine=all --format=tableCreate a service account in the Google Cloud Console
Generate a JSON key
Add the service account email as a user in Search Console with "Full" or "Restricted" access
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/key.json"
๐ Tools (Fluent Domain Architecture)
Search Console MCP v2.0 features 7 Fluent Domain Tools that handle all SEO, Analytics, Inspection, and Indexing operations cleanly:
Fluent Tool | Parameters / Actions | Description |
|
| Lists verified sites across search engines in parallel |
|
| Adds or removes site properties |
|
| Configures multi-account profiles |
|
| Fetches sitemap status and indexing state |
|
| Submits sitemaps to GSC & Bing |
|
| Removes sitemaps |
|
| Multi-engine search & GA4 analytics query |
|
| Analyzes period deltas, trend shifts, and drop causes |
|
| Statistical detection of traffic spikes/drops |
|
| Google URL inspection & Bing URL info |
|
| Core Web Vitals and PageSpeed Insights audits |
|
| Instantly indexes URLs via IndexNow or Google/Bing API |
|
| Checks remaining indexing quota & URL status |
|
| Comprehensive automated SEO audits |
|
| Keyword volumes and related keyword stats |
|
| One-shot site performance & technical audit |
|
| Side-by-side Google vs Bing performance breakdown |
|
| Flags likely generative-AI / conversational queries (custom heuristic, no official API) |
Google AdSense Tools
Tool | Parameters | Description |
|
| Lists configured or discoverable AdSense publisher accounts |
|
| Earnings, impressions, clicks, CTR & RPM with dimension breakdowns. Custom dates override |
|
| Outstanding payments and account alerts (policy issues, payment holds) |
Note:
accountIdrefers to the configured profile ID (e.g.adsense_2, as shown byaccounts_manage), not a publisher resource name likeaccounts/pub-123.
All legacy tool names (bing_sites_list, seo_quick_wins, sitemaps_get, bing_index_now, indexing_submit_url, opportunity_matrix, etc.) continue to work transparently via our fallback router.
Read our complete Backward Compatibility & Migration Guide โ
๐ Security
OS keychain first โ tokens stored in macOS Keychain, Windows Credential Manager, or Linux Secret Service
AES-256-GCM fallback โ encrypted with a key derived from your machine's hardware ID; a stolen file is useless on another device
Minimal storage โ only
refresh_tokenandexpiry_dateare persisted, atmode 600Silent refresh โ tokens renew automatically in the background
License
MIT ยท Contributing guide ยท Backward Compatibility Guide
If this saves you a spreadsheet, consider โญ starring the repo.
Available Tools
25 toolsaccounts_manageC
Manage Google Search Console service accounts and site permissions.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Optional email filter | ||
| action | Yes | Account action | |
| siteUrl | No | Site URL to add to account | |
| accountId | No | Account ID for add_site or remove |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavioral traits. It merely says 'manage,' which implies mutability but does not warn about the destructive 'remove' action, permission requirements, or any side effects. This is a significant gap for a tool that can modify account permissions.
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, concise and front-loaded with the domain. It wastes no words, though it could have included more actionable detail. Given the brevity, it earns a solid score for structure.
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 a multi-action schema with a destructive 'remove' operation, yet the description provides no context about actions, use cases, or consequences. There is no output schema, no annotation, and the description does not compensate for the missing behavioral context. This is inadequate for a tool of this 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?
The schema descriptions cover 100% of the parameters with clear meanings (e.g., 'Optional email filter', 'Account action', 'Site URL to add to account', 'Account ID for add_site or remove'). The description adds no additional parameter-level information, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the general purpose ('Manage Google Search Console service accounts and site permissions') but uses the vague verb 'manage' without specifying the exact operations (list, add, remove) that the tool performs. It does not distinguish itself from sibling tools like sites_manage, so purpose clarity is moderate.
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 usage guidance is provided. The description does not indicate when to use this tool versus alternatives such as sites_manage or sites_list, nor does it mention any prerequisites or exclusions. The agent is left to infer usage 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.
adsense_accountsA
List configured AdSense publisher accounts, or discover all publisher accounts the authorized user has access to.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | configured = saved accounts; discover = all accessible publisher IDs (default: configured) | |
| accountId | No | Specific AdSense account ID (default: auto-select) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It communicates read-only listing and auth context ('authorized user has access to'), and clarifies the difference between configured and discover modes. However, it does not mention potential scale of discover results, rate limits, or any permission requirements beyond the access statement.
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 leads with the verb and resource, then conveys both operation modes without extraneous detail. Every part 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?
For a simple tool with two optional parameters and no output schema, the description covers its core behavior and scope adequately. Missing details like output format or the size of discover results are relatively minor given the low 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 100%, so the mode enum and accountId default are already documented. The tool description only restates what the schema properties say and adds no meaningful parameter semantics beyond that.
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 ('List') and resource ('AdSense publisher accounts'), and explicitly distinguishes two modes: configured vs discover. This clearly identifies what the tool does and separates it from sibling AdSense report/payment tools.
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 mode parameter's semantics (configured saved accounts vs all accessible IDs) and notes the default, but it does not state when to prefer this tool over alternatives like adsense_report or adsense_payments_alerts. Usage guidance is 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.
adsense_payments_alertsB
Outstanding AdSense payments and account alerts (policy issues, payment holds).
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No | Specific AdSense account ID (default: auto-select) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It does not explicitly state that this is a read-only retrieval operation, nor does it mention any side effects, data freshness, or authorization requirements. The description is a noun phrase rather than a behavioral statement.
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 and front-loaded, with no redundant words. The parenthetical clarification adds useful detail. It could be improved by turning the noun phrase into an action-oriented sentence, but it is not bloated.
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 one optional, well-documented parameter and no output schema, the description is minimally adequate. The main missing piece is explicit behavioral context (read-only, what states alerts can be in) and any guidance on when to prefer sibling reporting 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?
The only parameter, accountId, is already fully described in the schema with its default behavior. The tool description adds no additional parameter-level meaning, but because schema coverage is 100%, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource: outstanding AdSense payments and account alerts, with helpful parenthetical examples. It is distinguishable from sibling tools like adsense_report and adsense_accounts by its focus on payments and alerts, though it lacks a specific verb.
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 use case is implied: an agent would choose this tool when the user needs outstanding payments or account alerts. However, there is no explicit guidance about when not to use it or how it differs from adsense_report or adsense_accounts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adsense_reportB
Google AdSense earnings & performance report: estimated earnings, impressions, clicks, CTR and RPM with dimension breakdowns.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | Custom end date YYYY-MM-DD (requires startDate) | |
| metrics | No | Metrics to report (default: earnings, page views, impressions, clicks, RPM) | |
| orderBy | No | Sort order as "+METRIC" (ascending) or "-METRIC" (descending), e.g. "-ESTIMATED_EARNINGS" | |
| rowLimit | No | Max rows to return (default: 100, max: 200) | |
| accountId | No | Specific AdSense account ID (default: auto-select) | |
| dateRange | No | Preset date range (default: LAST_7_DAYS) | |
| startDate | No | Custom start date YYYY-MM-DD (requires endDate, overrides dateRange) | |
| dimensions | No | Breakdown dimensions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only summarizes what the tool reports. It does not disclose the response format, the default behavior when called with no arguments (LAST_7_DAYS range, auto-selected account), the startDate/endDate mutual dependency, or the rowLimit cap. The read-only nature is implied by 'report', but no explicit safety or side-effect context is given.
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 tightly packed sentence that front-loads the resource (Google AdSense) and function (earnings & performance report), followed by the metric scope. Every element contributes, with no filler or repetition of schema 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?
The tool has 8 flexible parameters, no output schema, and no annotations, but the schema itself is exceptionally well documented (100% coverage with defaults and enums), so the description need not re-explain parameters. However, it does not convey what a zero-argument call returns or how the report output is structured, which matters for such a flexible tool. Adequate orientation, with clear gaps around output and default behavior.
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 100%, so the schema already documents every parameter with defaults and enums, meeting the baseline of 3. The description's mention of default metrics and dimension breakdowns restates schema information rather than adding new parameter-level meaning. No inter-parameter nuance is added beyond what the schema already says.
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 clear function: a Google AdSense earnings and performance report, and enumerates the covered metrics (estimated earnings, impressions, clicks, CTR, RPM) plus dimension breakdowns. This differentiates it from the AdSense-adjacent siblings (adsense_accounts, adsense_payments_alerts) by focusing on reporting rather than account or payment management. It stops short of a 5 because the verb 'report' is generic and sibling differentiation is implied rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 description never mentions adsense_accounts or adsense_payments_alerts, nor any conditions that should route an agent to them, so the agent must infer the boundary from tool names alone. No prerequisites, exclusions, or use-this-instead hints are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analytics_advancedC
Google Analytics 4 (GA4) e-commerce, realtime metrics, user behavior, and conversion funnels.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | End date YYYY-MM-DD | |
| startDate | No | Start date YYYY-MM-DD | |
| metricType | Yes | Metric type | |
| propertyId | Yes | GA4 Property ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only lists metric categories and does not disclose whether this is a read-only operation, how date ranges interact with realtime metrics, or what the response format looks like. This is a significant gap for a data-querying 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 a single concise sentence with no wasted words. It efficiently communicates the tool's domain, though it could be more informative without sacrificing brevity. The structure is clean and front-loaded with the main subject.
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 absence of an output schema and annotations, and the presence of sibling analytics tools, the description is severely incomplete. It does not explain return values, date handling, or how this 'advanced' tool differs from analytics_query/analytics_compare. The agent is left without context to use it effectively.
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 100%, so the schema already documents all four parameters. The description adds limited value by listing metric types that partially map to the metricType enum, but it provides no extra detail on parameter combinations, constraints, or format beyond what the schema states.
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 lists metric categories (e-commerce, realtime, user behavior, conversion funnels) but lacks a verb like 'query' or 'retrieve'. It's not a tautology, but it's vague about the exact operation. It sets this tool apart from siblings by naming specific GA4 metric types, but the purpose remains unclear without an action.
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 over alternatives like analytics_query, analytics_compare, or analytics_anomalies. The description does not mention any exclusions, prerequisites, or trade-offs, leaving the agent without direction on selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analytics_anomaliesB
Detect search traffic anomalies across Google and Bing.
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | Target search engine (default: all) | |
| endDate | No | End date YYYY-MM-DD | |
| siteUrl | Yes | The site property URL | |
| startDate | No | Start date YYYY-MM-DD | |
| threshold | No | Sensitivity threshold |
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 disclosing behavior. It only says 'Detect' which implies a read operation, but it does not explain what constitutes an anomaly, whether data is modified, if any authentication is needed, or what the response format looks like. This is minimal and 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 sentence that is concise and front-loaded with the primary action. It is not bloated, but it could be slightly more informative without losing conciseness. It earns its place but does not provide additional context, so it is not a 5.
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 5 parameters, no annotations, and no output schema. The description gives only a high-level purpose and fails to explain the return value, how the threshold affects detection, or what 'anomaly' means in this context. This leaves significant gaps for an agent to invoke 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?
The input schema covers all parameters with descriptions, meeting the high coverage criterion (>80%). The description itself does not add extra semantic meaning, but the schema provides adequate definitions for engine, dates, siteUrl, and threshold. Thus, a baseline of 3 is appropriate.
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 'Detect' and a specific resource 'search traffic anomalies' across Google and Bing. This clearly distinguishes it from sibling tools like analytics_query or analytics_compare, which focus on querying or comparing data rather than anomaly detection.
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. It does not mention any prerequisites, exclusions, or situations where another tool would be more appropriate. Given siblings like analytics_advanced and compare_engines, explicit usage context is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analytics_compareB
Period-over-period search performance comparisons, trends, and traffic drop attributions.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Comparison mode | |
| engine | No | Target search engine (default: all) | |
| endDate | No | End date YYYY-MM-DD | |
| siteUrl | Yes | The site property URL | |
| startDate | No | Start date YYYY-MM-DD | |
| compareEndDate | No | Comparison end date | |
| compareStartDate | No | Comparison start date |
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 does not mention whether the tool is read-only, requires special permissions, or has any side effects. It also does not describe the response format or how 'drop attributions' are computed. The description is a thin feature list with no additional behavioral context, which is inadequate for a tool with no annotation support.
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 front-loads the core concept ('Period-over-period') and lists three key capabilities without any filler. It is appropriately sized for a tool with moderate complexity and earns a high score for 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?
The tool has 7 parameters, 2 enums, and no output schema, so the description should compensate by explaining the return values and edge cases. It only provides a brief feature list and does not clarify how modes differ, what 'trends' entails, or what the response looks like. This is insufficient for a tool with this 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 100%, so the schema already documents all seven parameters, including enums for mode and engine. The description adds minimal extra meaning by framing the tool around 'period-over-period' comparisons, which hints at the date parameters, but it does not explain parameter interplay or the meaning of different modes. Baseline 3 is appropriate because the schema does the heavy lifting.
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 scope: period-over-period search performance comparisons, trends, and traffic drop attributions. It identifies the resource (search performance) and implies analytical actions, though it lacks a direct verb like 'compare'. It distinguishes from siblings by focusing on period-over-period analysis and drop attribution, which are not mentioned in other tool names.
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 when period-over-period comparisons, trends, or drop attribution are needed, but it does not explicitly state when to use this tool versus alternatives like analytics_query or analytics_anomalies. No exclusions or alternative references are provided, so guidance is only 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.
analytics_queryB
Unified search performance query replacing single-dimension tools. Supports queries, pages, countries, devices, and search appearances.
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | Target search engine (default: all) | |
| endDate | No | End date YYYY-MM-DD | |
| filters | No | Filter objects | |
| siteUrl | Yes | The site property URL | |
| rowLimit | No | Row limit | |
| startDate | No | Start date YYYY-MM-DD | |
| dimensions | No | Dimensions: query, page, country, device, searchAppearance, date |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral transparency. It only lists supported dimensions but does not disclose return format, default date ranges, pagination, authorization requirements, or any side effects. For a read-like query tool, this is insufficient 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?
The description is concise, consisting of two short sentences with no wasted words. The first sentence establishes the tool's main purpose and differentiation, and the second lists key dimensions. All information is relevant and 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 7 parameters and no output schema, the description is quite thin. It doesn't explain what the query returns, how filters work, default date handling, or any orchestration details. The description is inadequate for an agent to fully understand the tool's behavior in complex scenarios.
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 covers all parameters with descriptions (100% coverage), so the baseline is 3. The description adds no extra parameter semantics beyond what the schema already provides; it merely repeats the dimension values. No additional meaning or clarification is given.
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 this is a unified search performance query tool, and it differentiates itself by replacing single-dimension tools. It lists the supported dimensions (queries, pages, countries, devices, search appearances), providing a clear scope. However, it doesn't explicitly name the alternative tools it replaces, so it's not a perfect 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 that this tool should be used for search performance queries when multiple dimensions are needed, as it replaces single-dimension tools. However, it doesn't explicitly state when to use it versus the sibling analytics tools (e.g., analytics_compare, analytics_anomalies, analytics_advanced) or provide any exclusion criteria. The guidance is implied but not fully articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_enginesB
Cross-engine performance matrix comparing Google Search Console vs Bing Webmaster Tools.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Result row limit | |
| endDate | No | End date YYYY-MM-DD | |
| siteUrl | Yes | The site property URL | |
| dimension | No | Comparison dimension | |
| startDate | No | Start date YYYY-MM-DD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It only states it compares GSC vs Bing, without explaining whether it performs read-only API calls, what data source it accesses, authentication needs, or how results are structured. For a multi-source comparison tool, 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?
The single-sentence description is concise and front-loaded with the core purpose. It lacks a bit of useful structure but contains no wasted words, earning a strong but not perfect score.
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 5 parameters, no output schema, no annotations, and only a one-line description, the tool's invocation context is under-specified. The description doesn't clarify optional parameter defaults, return format, or how the comparison matrix is built, making it insufficient for an agent to reliably use the 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 100%, so the input schema already documents all five parameters. The description adds no parameter semantics beyond the schema, but the baseline of 3 is warranted since the schema fully covers parameter 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 names a specific resource ('Cross-engine performance matrix comparing Google Search Console vs Bing Webmaster Tools'), making the tool's purpose clear. It doesn't explicitly differentiate from siblings like analytics_compare, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Cross-engine performance matrix' implies use when comparing GSC and Bing metrics, but the description provides no explicit when-to-use guidance or alternatives. A clear context is absent beyond the comparison intent, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnosticsA
Run connectivity diagnostics for all connected accounts. Use this to troubleshoot '0 results' or authentication issues.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden for behavioral disclosure. It clearly states the tool runs connectivity diagnostics, which is sufficient for a parameterless tool. However, it could elaborate on what diagnostics entail (e.g., pinging each account), but the simplicity mitigates the need.
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 with no wasted words. It front-loads the action and purpose efficiently.
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 parameterless tool with no output schema, the description provides sufficient context: what it does and when to use it. No additional information 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?
The input schema has zero parameters with 100% coverage. Per guidelines, a baseline of 4 applies when no parameters exist, and the description adds no unnecessary parameter info.
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 ('Run connectivity diagnostics') and resource ('all connected accounts'), clearly distinguishing it from sibling tools which focus on analytics, SEO, and indexing. It explicitly states the purpose: troubleshooting '0 results' or authentication issues.
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 when to use the tool ('to troubleshoot '0 results' or authentication issues'), implying it should not be used for routine queries. This provides clear context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
genai_query_insightsA
Detect likely generative-AI / AI-Mode / conversational fanout queries across Google and Bing. Because neither search engine exposes generative-AI citation data via its public API yet, this matches heuristic patterns (prompt verbs, follow-ups, conversational phrasing) on regular query-level performance data; it is an undercount, not an official report.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Lookback window in days (default: 28) | |
| engine | No | Target search engine (default: all) | |
| siteUrl | Yes | The site property URL | |
| includePages | No | Enrich matched queries with the pages they map to (default: false) | |
| minImpressions | No | Ignore queries with fewer impressions than this (default: 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by revealing that detection is heuristic, based on patterns like prompt verbs and conversational phrasing, operating on regular query-level performance data, and that results are an undercount rather than official. It does not describe return format or side effects, but the read-only nature is reasonably implied by 'Detect'.
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 with no filler. The first sentence front-loads the core purpose, and the second adds critical methodology and limitations. Every clause 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?
Given that there is no output schema and no annotations, the description provides enough context to select and invoke the tool: purpose, scope, method, data source, and limitations. The main gap is that it does not describe the response shape or whether results are grouped or detailed, but the current description is still sufficiently complete for a heuristic insights 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?
The input schema has 100% parameter description coverage, so the schema already explains days, engine, siteUrl, includePages, and minImpressions. The description does not add meaningful parameter-level semantics beyond the schema; it mentions matching patterns but does not map those patterns to specific parameters. Baseline 3 is appropriate.
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 ('Detect') and a precise resource ('likely generative-AI / AI-Mode / conversational fanout queries across Google and Bing'). This clearly distinguishes it from sibling tools like analytics_query or compare_engines, which target general query analytics or engine comparison rather than genAI-specific detection.
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 context for when this tool is appropriate: when you need to detect genAI-style queries and are aware that public APIs lack citation data. It also provides an important exclusionary caveat ('it is an undercount, not an official report'). However, it does not explicitly name alternative tools or state when not to use it in favor of regular analytics tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_startedA
Start here. Returns a complete map of this server's capabilities, active platforms, and recommended workflows. Call this once at the beginning of any session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, but description implies read-only, non-destructive behavior by returning a 'map.' Lacks details on caching or rate limits, but acceptable for a simple initialization 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?
Two efficient sentences, front-loaded with imperative 'Start here.' No 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?
Given zero parameters, no output schema, and no annotations, the description covers all needed context: what it returns, when to call, and its role as a starting 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?
No parameters, so baseline 4. Description appropriately does not add parameter info since none exist.
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 the tool returns a complete map of capabilities, platforms, and workflows. Distinct from all sibling tools which focus on specific SEO/analytics functions.
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 'Start here' and 'Call this once at the beginning of any session,' providing clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
indexing_statusA
Check notification status for Google Indexing API or remaining daily Bing submission quota.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | URL to check status for | |
| type | No | Check type (default: status) | |
| engine | No | Target search engine | |
| siteUrl | Yes | The site property URL |
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 mentions the action 'check' but does not state side effects, authentication requirements, rate limits, or return format. The description only lists what is checked without deeper behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant or extraneous words. It efficiently communicates the tool's 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?
The tool has four parameters and no output schema, but the description does not explain return values or how the Google/Bing behaviors differ beyond the basics. The 100% schema coverage helps, but the description alone leaves gaps in expected output and parameter interaction.
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 100%, so a baseline of 3 is appropriate. The description adds some context by linking Google to notification status and Bing to quota, which hints at how engine and type parameters might be used, but it does not explicitly map parameters to actions.
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 checks notification status for Google Indexing API and remaining daily Bing submission quota, using a specific verb ('Check') and identifiable resources. This distinguishes it from sibling tools like indexing_submit, which handles submissions.
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 checking status/quota but does not explicitly state when to use this tool versus alternatives like indexing_submit, nor does it provide any exclusions or conditions. Usage is 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.
indexing_submitB
Submit URL(s) for indexing via Google Indexing API, Bing URL submission, or IndexNow protocol.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Key for IndexNow submission | |
| host | No | Host for IndexNow submission | |
| urls | Yes | List of URLs to submit | |
| engine | No | Target search engine (default: google) | |
| method | No | Submission method (default: standard) | |
| siteUrl | No | The site property URL | |
| keyLocation | No | Key location URL for IndexNow |
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 only says 'Submit', which implies an external write action, but does not disclose authentication requirements, rate limits, side effects, or that different methods (standard/index_now/remove) may have different behaviors. This is a significant transparency 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?
The description is a single, front-loaded sentence that immediately states the action and object. It is concise with no wasted words, and every element (the three mechanisms) 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 7 parameters and 2 enums, the description does not explain how they interrelate (e.g., which parameters are needed for IndexNow vs Google), any prerequisites, or what the tool returns. With no output schema, the description should provide more operational context but does not.
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 100%, so the baseline is 3. The description adds little beyond naming the protocols, but the schema already documents all seven parameters with meaningful descriptions. No additional parameter semantics are provided, which keeps the score at the baseline.
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 ('Submit') and resource ('URL(s) for indexing'), and clearly distinguishes from sibling tools like sitemaps_submit by naming the indexing protocols (Google Indexing API, Bing, IndexNow). It is unambiguous about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides the general use case (submitting URLs for indexing) but gives no guidance on when to choose this tool over siblings like sitemaps_submit or indexing_status, nor on how to choose among the three mentioned protocols. Usage is implied rather than explicitly explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspection_inspectB
Inspect indexing, canonical, and crawl status for single or batch URLs on Google or Bing.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | List of URLs to inspect | |
| engine | No | Target search engine (default: all) | |
| siteUrl | Yes | The site property URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. 'Inspect' suggests a read operation, but it doesn't state that explicitly, nor does it mention response format, rate limits, or behavior for invalid URLs. Minimal behavioral context beyond the action verb.
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, well-structured sentence that immediately states the verb and resource. No redundant words or filler. The key constraints (single/batch, engines) are included efficiently.
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 output schema and no annotations, the description should explain what the tool returns or any important caveats. It doesn't mention the default engine behavior (all), batch size limits, or what the inspection output looks like, leaving a significant gap for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds context by referencing 'single or batch URLs' (matching urls array) and 'Google or Bing' (matching engine enum), which reinforces the schema but doesn't add new syntax or format details.
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 the specific verb 'Inspect' and names the resource (indexing, canonical, crawl status) and scope (single/batch URLs on Google/Bing). This clearly distinguishes it from sibling tools like analytics_query or indexing_submit, though indexing_status overlaps somewhat.
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 it (inspecting URL status across engines), but provides no explicit guidance on when not to use it or alternatives. It mentions batch and engine options, but lacks exclusions or comparisons to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pagespeed_analyzeB
Run PageSpeed Insights & Core Web Vitals performance analysis for a page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL to analyze | |
| cwvOnly | No | Return Core Web Vitals metrics only | |
| category | No | Lighthouse categories | |
| strategy | No | Device strategy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits, but it only says 'Run ... analysis' without mentioning any side effects, data returned, rate limits, authentication, or caveats. There is zero behavioral transparency beyond the bare action.
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 unnecessary words or repetition. It is perfectly concise and structured for quick parsing.
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 output schema and no annotations, the description should explain what the analysis returns and any relevant context, but it does not. It also lacks usage guidance, leaving important context incomplete for a tool with multiple 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 100%, so the schema already documents all four parameters. The description adds no extra meaning beyond the schema, earning the baseline score of 3 for high schema 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 a specific action (Run) on a specific resource (PageSpeed Insights & Core Web Vitals performance analysis) for a page. It effectively distinguishes this tool from siblings like seo_audit or site_health_check by focusing on PageSpeed and Core Web 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 provides no guidance on when to use this tool versus alternatives. There are no exclusions, prerequisites, or alternative tool suggestions, leaving the agent to infer usage solely from the tool's name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schema_validateA
Validate structured data (JSON-LD, Microdata, RDFa) for a given webpage URL.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The webpage URL to validate structured markup for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description itself must carry the burden of behavioral disclosure; it mentions supported formats but does not describe the output/return value, side effects, or any prerequisites. For example, it should state that validation is read-only and returns a validation report or errors.
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 is front-loaded with the action and lists the key input formats, containing no redundant information. It is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the tool is simple with one parameter and no output schema, the description clearly states the action and input formats, but it omits what the validation returns (e.g., a report, errors, pass/fail), which is a meaningful gap given the absence of an output schema. The description is adequate but not fully 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?
The schema already documents the sole 'url' parameter with a clear description; the tool description adds context about supported formats but does not add parameter-specific semantics beyond the schema. With 100% schema coverage, the baseline is 3 as the description does not contradict or enhance parameter 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 uses the specific verb 'Validate' with a resource 'structured data' and lists supported formats (JSON-LD, Microdata, RDFa) for a given URL, clearly distinguishing it from siblings like inspection_inspect or pagespeed_analyze which address different concerns. It precisely states what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided regarding when to use this tool vs alternatives; the intended usage is implied by the name and description but not stated as a recommendation or exclusion. It does not mention when not to use it or point to sibling tools for related tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seo_auditB
Specialized SEO intelligence analysis (recommendations, quick wins, cannibalization, striking distance, lost queries, low CTR, brand vs nonbrand).
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Audit analysis type | |
| engine | No | Target search engine (default: all) | |
| siteUrl | Yes | The site property URL | |
| brandKeywords | No | Brand keywords for brand_vs_nonbrand analysis | |
| minImpressions | No | Minimum impressions threshold |
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 only states that the tool performs analysis, with no mention of whether it is read-only, what permissions are needed, rate limits, or output format. The word 'analysis' hints at a non-destructive operation, but this is insufficient for a complex tool with multiple analysis modes.
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 that lists the core analysis types with no filler. Every word contributes to conveying the tool's purpose. It is exceptionally concise and well-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?
This is a complex tool with 8 analysis types, 5 parameters, and no output schema. The one-line description does not explain what each analysis type returns, how parameters like brandKeywords or minImpressions influence behavior, or what the output structure looks like. It is far too minimal for the tool's complexity, leaving significant gaps for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all five parameters with full coverage (100%), so the baseline is 3. The description essentially repeats the enum values of the 'type' parameter without adding deeper meaning, such as parameter dependencies (e.g., brandKeywords for brand_vs_nonbrand) or interpretation of thresholds. It adds no semantic value beyond the 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 identifies the tool as 'Specialized SEO intelligence analysis' and enumerates eight distinct analysis types (recommendations, quick wins, cannibalization, etc.), which clearly conveys its function and differentiates it from siblings like analytics_query or site_health_check. However, it lacks an explicit verb (e.g., 'runs', 'performs'), which keeps it from a perfect score.
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 list of analysis types implies when to use the tool (e.g., for quick wins or cannibalization), but there is no explicit guidance about when to choose this tool over alternatives, nor any exclusions. The usage context is only implied, not clearly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
seo_keywords_researchC
Keyword performance stats, related query expansion, and search volume estimates.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Analysis type | |
| engine | No | Target search engine (default: google) | |
| country | No | Country code | |
| siteUrl | No | The site property URL | |
| keywords | Yes | Keywords to analyze | |
| language | No | Language code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits, but it only lists capability names. It does not state whether the operation is read-only, requires authentication, has rate limits, or returns specific data shapes. The lack of any behavioral context leaves the agent guessing about side effects and output format.
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 one concise fragment that lists the tool's capabilities in a scannable way. No redundant words. However, it is a noun phrase rather than a full sentence, which slightly reduces clarity, but it earns a high score for 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?
Despite having six parameters and no output schema, the description provides no information about return values, how to interpret the three types, or what the output structure looks like. It does not compensate for the missing output schema and leaves the agent without enough context to fully understand the tool's behavior.
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 already provides 100% description coverage for all six parameters, so the baseline is 3. The description adds slight meaning by aligning 'keyword performance stats', 'related query expansion', and 'search volume estimates' with the 'type' enum values, but it does not explain parameter syntax, dependencies, or country/language format beyond what the schema already provides.
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 lists concrete outputs ('Keyword performance stats, related query expansion, and search volume estimates') that map directly to the tool's function and distinguish it from sibling analytics/site tools. It lacks a verb but communicates the resource (keywords) and the types of analysis. Could be clearer by explicitly stating 'perform keyword research' but is specific enough.
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 analytics_query or compare_engines. There is no mention of suitable scenarios, exclusions, or relationship to sibling tools. The existence of the 'type' enum (stats/related/traffic) implies different use cases but is not explained in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
site_health_checkC
Comprehensive health audit across Google Search Console and Bing Webmaster Tools.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Health check depth | |
| engine | No | Target search engine (default: all) | |
| siteUrl | No | Optional specific site URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the transparency burden. It states 'health audit' but does not say whether it is read-only, what data is checked, what output the user can expect, or any side effects. 'Audit' implies a non-mutating action, but that is not explicit, and no details on return values or limitations are given.
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 with no redundant phrasing. The word 'Comprehensive' is somewhat vague but not wasteful. It is well-front-loaded and easily scannable, though the brevity comes at the cost of omitted contextual detail.
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 absence of an output schema and annotations, the description is too terse to be complete. It does not explain what 'health audit' entails, what each level (summary, full, crawl_issues) returns, or how it relates to sibling tools like diagnostics or seo_audit. The tool has three optional parameters, but the description gives no sense of when to adjust 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 100%, so the baseline is 3. The description adds little beyond the schema: it mentions the two search engines, but the engine parameter already enumerates google, bing, and all. No additional meaning is provided for 'level' or 'siteUrl'. Thus it meets the baseline without enhancement.
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 is specific in scope: a health audit across Google Search Console and Bing Webmaster Tools. It clearly indicates the resource (site health) and the action (audit). However, it doesn't contrast with sibling tools like seo_audit or diagnostics, so it only partially distinguishes 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?
No guidance is provided on when to use this tool over alternatives. There is no mention of 'use this for...' or 'instead of...', and the sibling tools (seo_audit, diagnostics, compare_engines) suggest plausible overlap, but the description gives no criteria for choosing this one.
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 sitemap from Google Search Console or Bing Webmaster Tools.
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | Target search engine (default: all) | |
| feedUrl | Yes | The sitemap feed URL to delete | |
| siteUrl | Yes | The site property URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that it deletes a sitemap, but does not mention consequences (e.g., irreversibility), permission requirements, error behavior, or how the operation affects both engines depending on the 'engine' parameter. This is a significant gap for a destructive 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 a single, focused sentence with no extraneous words. It is well-structured and immediately conveys the tool's 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?
The tool is relatively simple with three parameters, all documented in the schema. However, without an output schema or annotations, the description leaves gaps about return values, side effects, and behavior when 'engine' is 'all'. It is adequate but not fully complete for a destructive 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 100%, so the baseline is 3. The description adds only marginal value by naming the two engines (Google Search Console, Bing Webmaster Tools) which aligns with the 'engine' parameter enum, but does not elaborate on feedUrl or siteUrl beyond what the schema already provides.
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 ('Delete a sitemap') and the resource ('from Google Search Console or Bing Webmaster Tools'), distinguishing it from sibling tools like sitemaps_list and sitemaps_submit. The verb is specific and unambiguous.
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 clear context for when to use the tool (when deleting a sitemap) and mentions both target engines. However, it does not explicitly discuss alternatives or when not to use it, though the destructive nature of the operation makes the use case fairly evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sitemaps_listB
List submitted XML sitemaps and status for a site.
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | Target search engine (default: all) | |
| feedUrl | No | Optional specific sitemap feed URL | |
| siteUrl | Yes | The site property URL |
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 indicates the tool lists submitted sitemaps, implying a read operation, but does not mention authentication requirements, rate limits, or what 'status' values are possible. The word 'submitted' adds some scoping, but other behavioral traits are undisclosed.
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 clear sentence with no redundant words. It front-loads the verb and resource, making it immediately understandable. It earns its place without any 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?
The tool has no output schema and no annotations, and the description is minimal. It does not explain the return format, the meaning of 'status', or how the engine and feedUrl parameters affect results. Given the list operation's moderate complexity, the description is too sparse to fully prepare an agent for 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 100%, so the baseline is 3. The description mentions 'for a site' which loosely maps to siteUrl, but it does not elaborate on the engine or feedUrl parameters. Since the schema already describes these parameters, the description adds minimal extra semantic value.
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 'List' and the resource 'submitted XML sitemaps and status' for a site. This distinguishes it from sibling tools like sitemaps_submit and sitemaps_delete, making the purpose unambiguous.
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 when you need to view submitted sitemaps and their statuses, but it does not explicitly state when to use this tool versus alternatives like sitemaps_submit or sitemaps_delete. No exclusions or alternative guidance is provided, so it falls to implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sitemaps_submitB
Submit a new XML sitemap to Google Search Console and/or Bing Webmaster Tools.
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | Target search engine (default: all) | |
| feedUrl | Yes | The XML sitemap feed URL to submit | |
| siteUrl | Yes | The site property URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that a sitemap is submitted, but does not explain side effects (e.g., whether existing sitemaps are replaced), idempotency, or any asynchronous behavior. This is a significant gap for a mutating 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 a single, well-structured sentence that directly conveys the purpose without any filler or repetition. It is front-loaded and 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?
The description covers the core action and targets, but given no output schema or annotations, it omits details about return values and behavioral nuances. For a tool with moderate complexity, this is adequate but not fully 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 coverage is 100%, with each parameter having a description in the schema. The tool description itself adds no further parameter semantics, so the baseline score of 3 applies based on the schema's sufficiency.
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' and the resource 'XML sitemap', with explicit targets (Google Search Console and/or Bing Webmaster Tools). This distinguishes it from sibling tools like sitemaps_list and sitemaps_delete, which handle listing and 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?
The description provides no guidance on when to use this tool versus alternatives. It does not mention related workflows, prerequisites, or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sites_listA
List verified web properties across Google Search Console, Bing Webmaster Tools, or GA4.
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | Target search engine (default: all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It does reveal the operation is a read-only listing and mentions 'verified' properties, but it doesn't explain what 'verified' means or how GA4 properties fit into the engine parameter. Doesn't cover pagination or return format.
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?
Single sentence, front-loaded with the verb, no filler. Every word contributes to the 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?
The tool is simple (one param, no output schema), but the description lacks important context: what 'verified' means, how GA4 relates to the engine parameter, and what the return data looks like. Adequate for a basic listing tool but with 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 100% (engine has a description). The description adds platform names but creates ambiguity by introducing GA4, which is not a search engine and doesn't map cleanly to the enum values (google, bing, all). Thus it adds some value but also confusion.
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 ('List') and names the resource ('verified web properties') plus the target platforms (GSC, Bing, GA4). This clearly distinguishes it from siblings like sites_manage and sitemaps_list.
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 its usage contextโlisting verified sites across specific platforms. It doesn't explicitly mention alternatives or exclusions, but the context is clear enough for a list operation. A small deduction for not explicitly saying 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.
sites_manageB
Add or delete a web property from Google Search Console or Bing Webmaster Tools.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform | |
| engine | No | Target search engine (default: all) | |
| siteUrl | Yes | The site property URL |
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 states the action ('add or delete') but does not disclose side effects, permissions, reversibility of delete, or any limitations. For a mutation tool, 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 sentence, front-loaded with the action and resource, no unnecessary words. Every word 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?
Given it's a mutation tool with no annotations, no output schema, and no behavioral disclosures, the description is too minimal. It doesn't mention outcomes, error handling, or prerequisites, making it incomplete for the 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 coverage is 100% with descriptions for all parameters, so the baseline is 3. The description adds no specific meaning beyond the existing schema descriptions; it merely aligns with the action enum.
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 (add/delete) and resource (web property), and explicitly names the two target platforms (Google Search Console or Bing Webmaster Tools). This distinguishes it from sibling tools like sites_list or accounts_manage.
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 (it's for adding/deleting sites) but does not explicitly state when to use this tool versus alternatives, nor does it provide exclusion criteria. It is adequate but leaves the agent to infer context.
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. Dates show when Glama detected each change.
4 tool updates
v2.1.2- Added
adsense_accounts - Added
adsense_payments_alerts - Added
adsense_report - Added
genai_query_insights
104 tool updates
v2.0.2- Removed
accounts_add_site - Removed
accounts_list - Added
accounts_manage - Removed
accounts_remove - Added
analytics_advanced - Changed
analytics_anomalies6 fields changed- removed
Input schema / properties / daysRemoved value: -{ - "description": "Number of days to look back for baseline (default: 30)", - "type": "number" -} - added
Input schema / properties / endDateAdded value: +{ + "description": "End date YYYY-MM-DD", + "type": "string" +} - added
Input schema / properties / engineAdded value: +{ + "description": "Target search engine (default: all)", + "enum": [ + "google", + "bing", + "all" + ], + "type": "string" +} - changed
Input schema / properties / siteUrl / descriptionPrevious value: -"The URL of the site"New value: +"The site property URL" - added
Input schema / properties / startDateAdded value: +{ + "description": "Start date YYYY-MM-DD", + "type": "string" +} - changed
Input schema / properties / threshold / descriptionPrevious value: -"Sensitivity threshold (Standard Deviations, default: 2.5)"New value: +"Sensitivity threshold"
- Removed
analytics_audience_segments - Removed
analytics_by_country - Added
analytics_compare - Removed
analytics_compare_periods - Removed
analytics_content_performance - Removed
analytics_conversion_funnel - Removed
analytics_drop_attribution - Removed
analytics_ecommerce - Removed
analytics_organic_landing_pages - Removed
analytics_page_performance - Removed
analytics_pagespeed_correlation - Removed
analytics_performance_summary - Changed
analytics_query17 fields changed- removed
Input schema / properties / aggregationTypeRemoved value: -{ - "description": "How to aggregate data (default: auto)", - "enum": [ - "auto", - "byProperty", - "byPage" - ], - "type": "string" -} - removed
Input schema / properties / dataStateRemoved value: -{ - "description": "Include fresh data? 'all' includes fresh (preliminary) data (default: final)", - "enum": [ - "final", - "all" - ], - "type": "string" -} - changed
Input schema / properties / dimensions / descriptionPrevious value: -"Dimensions to group by (date, query, page, country, device, searchAppearance)"New value: +"Dimensions: query, page, country, device, searchAppearance, date" - changed
Input schema / properties / endDate / descriptionPrevious value: -"End date (YYYY-MM-DD)"New value: +"End date YYYY-MM-DD" - added
Input schema / properties / engineAdded value: +{ + "description": "Target search engine (default: all)", + "enum": [ + "google", + "bing", + "all" + ], + "type": "string" +} - changed
Input schema / properties / filters / descriptionPrevious value: -"Filters (dimension: query/page/country/device, operator: equals/contains/notContains/includingRegex/excludingRegex)"New value: +"Filter objects" - removed
Input schema / properties / filters / items / propertiesRemoved value: -{ - "dimension": { - "type": "string" - }, - "expression": { - "type": "string" - }, - "operator": { - "type": "string" - } -} - removed
Input schema / properties / filters / items / requiredRemoved value: -[ - "dimension", - "operator", - "expression" -] - removed
Input schema / properties / filters / items / typeRemoved value: -"object" - removed
Input schema / properties / formatRemoved value: -{ - "description": "Output format (default: json)", - "enum": [ - "json", - "csv" - ], - "type": "string" -} - removed
Input schema / properties / limitRemoved value: -{ - "description": "Max rows to return (default: 1000)", - "type": "number" -} - added
Input schema / properties / rowLimitAdded value: +{ + "description": "Row limit", + "type": "number" +} - changed
Input schema / properties / siteUrl / descriptionPrevious value: -"The URL of the site"New value: +"The site property URL" - changed
Input schema / properties / startDate / descriptionPrevious value: -"Start date (YYYY-MM-DD)"New value: +"Start date YYYY-MM-DD" - removed
Input schema / properties / startRowRemoved value: -{ - "description": "Starting row for pagination (0-based)", - "type": "number" -} - removed
Input schema / properties / typeRemoved value: -{ - "description": "Search type (default: web)", - "enum": [ - "web", - "image", - "video", - "news", - "discover", - "googleNews" - ], - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "siteUrl", - "startDate", - "endDate" -]New value: +[ + "siteUrl" +]
- Removed
analytics_realtime - Removed
analytics_search_appearance - Removed
analytics_time_series - Removed
analytics_top_pages - Removed
analytics_top_queries - Removed
analytics_traffic_sources - Removed
analytics_trends - Removed
analytics_user_behavior - Removed
bing_analytics_compare_periods - Removed
bing_analytics_detect_anomalies - Removed
bing_analytics_drop_attribution - Removed
bing_analytics_page - Removed
bing_analytics_page_query - Removed
bing_analytics_query - Removed
bing_analytics_query_page - Removed
bing_analytics_time_series - Removed
bing_analytics_trends - Removed
bing_brand_analysis - Removed
bing_crawl_issues - Removed
bing_crawl_stats - Removed
bing_get_top_pages - Removed
bing_get_top_queries - Removed
bing_index_now - Removed
bing_keywords_stats - Removed
bing_link_counts - Removed
bing_low_ctr_opportunities - Removed
bing_opportunity_finder - Removed
bing_rank_traffic_stats - Removed
bing_related_keywords - Removed
bing_seo_cannibalization - Removed
bing_seo_lost_queries - Removed
bing_seo_recommendations - Removed
bing_sitemaps_delete - Removed
bing_sitemaps_list - Removed
bing_sitemaps_submit - Removed
bing_sites_add - Removed
bing_sites_delete - Removed
bing_sites_health - Removed
bing_sites_list - Removed
bing_striking_distance - Removed
bing_url_info - Removed
bing_url_submission_quota - Removed
bing_url_submit - Removed
bing_url_submit_batch - Removed
brand_analysis - Changed
compare_engines10 fields changed- changed
Input schema / properties / dimension / descriptionPrevious value: -"Dimension to compare"New value: +"Comparison dimension" - changed
Input schema / properties / dimension / enumPrevious value: -[ - "query", - "page", - "country", - "device" -]New value: +[ + "query", + "page" +] - changed
Input schema / properties / endDate / descriptionPrevious value: -"End date (YYYY-MM-DD)"New value: +"End date YYYY-MM-DD" - changed
Input schema / properties / limit / descriptionPrevious value: -"Max rows to return per engine (default: 1000)"New value: +"Result row limit" - removed
Input schema / properties / minClicksRemoved value: -{ - "description": "Minimum clicks threshold", - "type": "number" -} - removed
Input schema / properties / minImpressionsRemoved value: -{ - "description": "Minimum impressions threshold", - "type": "number" -} - removed
Input schema / properties / offsetRemoved value: -{ - "description": "Offset for pagination", - "type": "number" -} - changed
Input schema / properties / siteUrl / descriptionPrevious value: -"The URL of the site"New value: +"The site property URL" - changed
Input schema / properties / startDate / descriptionPrevious value: -"Start date (YYYY-MM-DD)"New value: +"Start date YYYY-MM-DD" - changed
Input schema / requiredPrevious value: -[ - "siteUrl", - "dimension", - "startDate", - "endDate" -]New value: +[ + "siteUrl" +]
- Removed
indexing_batch_submit - Removed
indexing_remove_url - Changed
indexing_status5 fields changed- added
Input schema / properties / engineAdded value: +{ + "description": "Target search engine", + "enum": [ + "google", + "bing", + "all" + ], + "type": "string" +} - changed
Input schema / properties / siteUrl / descriptionPrevious value: -"The property URL as registered in Search Console"New value: +"The site property URL" - added
Input schema / properties / typeAdded value: +{ + "description": "Check type (default: status)", + "enum": [ + "status", + "quota" + ], + "type": "string" +} - changed
Input schema / properties / url / descriptionPrevious value: -"The URL to check notification status for"New value: +"URL to check status for" - changed
Input schema / requiredPrevious value: -[ - "siteUrl", - "url" -]New value: +[ + "siteUrl" +]
- Added
indexing_submit - Removed
indexing_submit_url - Removed
inspection_batch - Changed
inspection_inspect7 fields changed- changed
Input schema / properties / engine / descriptionPrevious value: -"The search engine (default: google)"New value: +"Target search engine (default: all)" - changed
Input schema / properties / engine / enumPrevious value: -[ - "google", - "bing" -]New value: +[ + "google", + "bing", + "all" +] - removed
Input schema / properties / inspectionUrlRemoved value: -{ - "description": "The fully-qualified URL to inspect", - "type": "string" -} - removed
Input schema / properties / languageCodeRemoved value: -{ - "description": "Language code for localized results (Google only)", - "type": "string" -} - changed
Input schema / properties / siteUrl / descriptionPrevious value: -"The URL of the property"New value: +"The site property URL" - added
Input schema / properties / urlsAdded value: +{ + "description": "List of URLs to inspect", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Input schema / requiredPrevious value: -[ - "siteUrl", - "inspectionUrl" -]New value: +[ + "siteUrl", + "urls" +]
- Removed
opportunity_matrix - Removed
page_analysis - Changed
pagespeed_analyze3 fields changed- added
Input schema / properties / categoryAdded value: +{ + "description": "Lighthouse categories", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / cwvOnlyAdded value: +{ + "description": "Return Core Web Vitals metrics only", + "type": "boolean" +} - changed
Input schema / properties / strategy / descriptionPrevious value: -"Device strategy (default: mobile)"New value: +"Device strategy"
- Removed
pagespeed_core_web_vitals - Changed
schema_validate4 fields changed- removed
Input schema / properties / dataRemoved value: -{ - "description": "The URL, HTML content, or JSON string to validate", - "type": "string" -} - removed
Input schema / properties / typeRemoved value: -{ - "description": "The type of input provided", - "enum": [ - "url", - "html", - "json" - ], - "type": "string" -} - added
Input schema / properties / urlAdded value: +{ + "description": "The webpage URL to validate structured markup for", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "type", - "data" -]New value: +[ + "url" +]
- Added
seo_audit - Removed
seo_brand_vs_nonbrand - Removed
seo_cannibalization - Added
seo_keywords_research - Removed
seo_lost_queries - Removed
seo_low_ctr_opportunities - Removed
seo_low_hanging_fruit - Removed
seo_primitive_is_brand - Removed
seo_primitive_is_cannibalized - Removed
seo_primitive_ranking_bucket - Removed
seo_primitive_traffic_delta - Removed
seo_quick_wins - Removed
seo_recommendations - Removed
seo_striking_distance - Added
site_health_check - Changed
sitemaps_delete6 fields changed- changed
Input schema / properties / engine / descriptionPrevious value: -"The search engine (default: google)"New value: +"Target search engine (default: all)" - changed
Input schema / properties / engine / enumPrevious value: -[ - "google", - "bing" -]New value: +[ + "google", + "bing", + "all" +] - added
Input schema / properties / feedUrlAdded value: +{ + "description": "The sitemap feed URL to delete", + "type": "string" +} - removed
Input schema / properties / feedpathRemoved value: -{ - "description": "The URL of the sitemap", - "type": "string" -} - changed
Input schema / properties / siteUrl / descriptionPrevious value: -"The URL of the site"New value: +"The site property URL" - changed
Input schema / requiredPrevious value: -[ - "siteUrl", - "feedpath" -]New value: +[ + "siteUrl", + "feedUrl" +]
- Removed
sitemaps_get - Changed
sitemaps_list4 fields changed- changed
Input schema / properties / engine / descriptionPrevious value: -"The search engine (default: google)"New value: +"Target search engine (default: all)" - changed
Input schema / properties / engine / enumPrevious value: -[ - "google", - "bing" -]New value: +[ + "google", + "bing", + "all" +] - added
Input schema / properties / feedUrlAdded value: +{ + "description": "Optional specific sitemap feed URL", + "type": "string" +} - changed
Input schema / properties / siteUrl / descriptionPrevious value: -"The URL of the site"New value: +"The site property URL"
- Changed
sitemaps_submit6 fields changed- changed
Input schema / properties / engine / descriptionPrevious value: -"The search engine (default: google)"New value: +"Target search engine (default: all)" - changed
Input schema / properties / engine / enumPrevious value: -[ - "google", - "bing" -]New value: +[ + "google", + "bing", + "all" +] - added
Input schema / properties / feedUrlAdded value: +{ + "description": "The XML sitemap feed URL to submit", + "type": "string" +} - removed
Input schema / properties / feedpathRemoved value: -{ - "description": "The URL of the sitemap", - "type": "string" -} - changed
Input schema / properties / siteUrl / descriptionPrevious value: -"The URL of the site"New value: +"The site property URL" - changed
Input schema / requiredPrevious value: -[ - "siteUrl", - "feedpath" -]New value: +[ + "siteUrl", + "feedUrl" +]
- Removed
sites_add - Removed
sites_delete - Removed
sites_get - Removed
sites_health_check - Changed
sites_list2 fields changed- changed
Input schema / properties / engine / descriptionPrevious value: -"The search engine (default: google)"New value: +"Target search engine (default: all)" - changed
Input schema / properties / engine / enumPrevious value: -[ - "google", - "bing", - "ga4" -]New value: +[ + "google", + "bing", + "all" +]
- Added
sites_manage - Removed
traffic_health_check - Removed
util_star_repo
98 tool updates
v1.14.2- First observed
accounts_add_site - First observed
accounts_list - First observed
accounts_remove - First observed
analytics_anomalies - First observed
analytics_audience_segments - First observed
analytics_by_country - First observed
analytics_compare_periods - First observed
analytics_content_performance - First observed
analytics_conversion_funnel - First observed
analytics_drop_attribution - First observed
analytics_ecommerce - First observed
analytics_organic_landing_pages - First observed
analytics_page_performance - First observed
analytics_pagespeed_correlation - First observed
analytics_performance_summary - First observed
analytics_query - First observed
analytics_realtime - First observed
analytics_search_appearance - First observed
analytics_time_series - First observed
analytics_top_pages - First observed
analytics_top_queries - First observed
analytics_traffic_sources - First observed
analytics_trends - First observed
analytics_user_behavior - First observed
bing_analytics_compare_periods - First observed
bing_analytics_detect_anomalies - First observed
bing_analytics_drop_attribution - First observed
bing_analytics_page - First observed
bing_analytics_page_query - First observed
bing_analytics_query - First observed
bing_analytics_query_page - First observed
bing_analytics_time_series - First observed
bing_analytics_trends - First observed
bing_brand_analysis - First observed
bing_crawl_issues - First observed
bing_crawl_stats - First observed
bing_get_top_pages - First observed
bing_get_top_queries - First observed
bing_index_now - First observed
bing_keywords_stats - First observed
bing_link_counts - First observed
bing_low_ctr_opportunities - First observed
bing_opportunity_finder - First observed
bing_rank_traffic_stats - First observed
bing_related_keywords - First observed
bing_seo_cannibalization - First observed
bing_seo_lost_queries - First observed
bing_seo_recommendations - First observed
bing_sitemaps_delete - First observed
bing_sitemaps_list - First observed
bing_sitemaps_submit - First observed
bing_sites_add - First observed
bing_sites_delete - First observed
bing_sites_health - First observed
bing_sites_list - First observed
bing_striking_distance - First observed
bing_url_info - First observed
bing_url_submission_quota - First observed
bing_url_submit - First observed
bing_url_submit_batch - First observed
brand_analysis - First observed
compare_engines - First observed
diagnostics - First observed
get_started - First observed
indexing_batch_submit - First observed
indexing_remove_url - First observed
indexing_status - First observed
indexing_submit_url - First observed
inspection_batch - First observed
inspection_inspect - First observed
opportunity_matrix - First observed
page_analysis - First observed
pagespeed_analyze - First observed
pagespeed_core_web_vitals - First observed
schema_validate - First observed
seo_brand_vs_nonbrand - First observed
seo_cannibalization - First observed
seo_lost_queries - First observed
seo_low_ctr_opportunities - First observed
seo_low_hanging_fruit - First observed
seo_primitive_is_brand - First observed
seo_primitive_is_cannibalized - First observed
seo_primitive_ranking_bucket - First observed
seo_primitive_traffic_delta - First observed
seo_quick_wins - First observed
seo_recommendations - First observed
seo_striking_distance - First observed
sitemaps_delete - First observed
sitemaps_get - First observed
sitemaps_list - First observed
sitemaps_submit - First observed
sites_add - First observed
sites_delete - First observed
sites_get - First observed
sites_health_check - First observed
sites_list - First observed
traffic_health_check - First observed
util_star_repo
TDQS
Each tool targets a distinct resource and action, from sitemaps to analytics to indexing. Even the four analytics_* tools are clearly differentiated by their specific purposes (raw query, period comparison, anomaly detection, GA4 features), with no meaningful overlaps.
Most tools follow a consistent noun_verb pattern (e.g., sites_list, sitemaps_submit, analytics_query). However, a few exceptions like get_started, compare_engines, and diagnostics break this convention, making the naming style slightly mixed.
With 21 tools, the server is on the heavy side for an MCP, falling into the 16-25 range that feels bloated. While each tool has a clear purpose, the breadth could be overwhelming, and a more focused set might be better.
The tool surface is remarkably complete for a search console server, covering site management, sitemaps, analytics, indexing, SEO audits, schema validation, page speed, and diagnostics. There are no obvious dead ends or gaps that would prevent agents from performing common workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Google search results via SERP API
A Model Context Protocol server for Wix AI tools
- RampifyOAuthdev.rampify
SEO MCP server: crawl your site, find AI-visibility gaps, and ship the fix from your coding agent.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for querying Google Search Console data โ search analytics, URL inspection, sitemap monitoring, and more โ read-only tools for any MCP-compatible AI client.7Apache 2.0
- AlicenseAqualityCmaintenanceA lightweight, fast MCP server for Google Search Console. Query search analytics, manage sitemaps, and inspect URLs directly from your AI assistant.7Apache 2.0
- AlicenseNot gradedqualityDmaintenanceThis MCP server provides LLMs with programmatic access to Google Search Console data and functionality, including search analytics, sitemap management, site management, and URL inspection.MIT
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol server that provides read-only access to Google Search Console data, enabling natural language queries about SEO performance, rankings, and indexing status.132MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/saurabhsharma2u/search-console-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server