Skip to main content
Glama
Akxan
by Akxan

google-seo-mcp

SEO & GEO MCP server for Claude and other AI agents — Google Search Console, Google Analytics 4, PageSpeed Insights, structured data, llms.txt, WordPress and GitHub as 72 tools, so an assistant can diagnose and fix technical SEO, content and generative-engine-optimization issues in one conversation.

GitHub stars License: MIT Node TypeScript MCP Tools Last commit

Google Search Console · Google Analytics 4 · PageSpeed & CrUX · on-page and GEO audits · WordPress over SSH · GitHub

Quick start · Tools · Architecture · Configuration · Deploy 24/7 · 中文文档


Why

google-seo-mcp is a Model Context Protocol server for SEO automation with AI agents. It connects Google Search Console, Google Analytics 4 (GA4), PageSpeed Insights / Core Web Vitals, the Chrome UX Report, Knowledge Graph, Wikidata, IndexNow, WordPress (Yoast SEO, WP-CLI over SSH) and GitHub, and adds GEO (generative engine optimization) checks: AI crawler access for GPTBot, OAI-SearchBot, ClaudeBot and PerplexityBot, llms.txt, JSON-LD / schema.org structured data, E-E-A-T signals and AI citation tracking.

Most SEO MCP servers wrap one API. Real SEO work crosses several: you find a striking-distance keyword in Search Console, check the landing page's engagement in GA4, audit the page, rewrite its title and FAQ, publish the change to WordPress or a static-site repo, then watch the numbers. This server gives an assistant every step of that loop as tools, with the guard-rails a public-facing site needs: read-only mode, destructive-action annotations, and untrusted-content instructions.

Related MCP server: Rampify MCP Server

What it can do

Area

Tools

Search Console (13)

gsc_list_sites, gsc_search_analytics, gsc_site_snapshot, gsc_compare_periods, gsc_opportunities (position 8–20 quick wins), gsc_ctr_opportunities, gsc_cannibalization, gsc_question_queries, gsc_rich_results_report, gsc_inspect_url, gsc_index_coverage, gsc_list_sitemaps / gsc_submit_sitemap

Google Analytics 4 (6)

ga_list_properties, ga_run_report, ga_run_realtime_report, ga_get_metadata, ga_compare_periods, ga_landing_page_seo (organic landing pages merged with Search Console)

Page & site audits (9)

page_audit, site_crawl, pagespeed, sitemap_check, robots_check, hreflang_check, social_preview_check, compare_pages, keyword_suggest

GEO (12)

ai_crawler_access, llms_txt_check, llms_txt_generate, structured_data_audit, schema_generate, schema_validate, geo_page_score, eeat_audit, knowledge_graph_check, indexnow_submit, ai_citation_check, brand_mentions

Analysis (5)

migration_check (pre-migration URL safety net), cross_site_links, content_refresh_candidates, crux_history, reviews_snapshot

WordPress (21, optional)

posts, Yoast SEO fields (single & bulk), BeTheme / Muffin Builder content, media alt text, categories & tags, internal-link suggestions, Yoast Premium redirects, JSON-LD injection, raw WP-CLI

GitHub (5, optional)

github_get_file, github_list_dir, github_search_code, github_list_commits, github_commit_files (atomic multi-file commits, so a static site can be edited from any client)

Plus google_auth_status for diagnostics. Every tool carries MCP annotations (readOnlyHint, destructiveHint, idempotentHint), the server publishes instructions for the model, and there is a read-only mode and toolset filtering.

  • "Give me a snapshot of example.com for the last 28 days."

  • "Which queries rank between 8 and 20 with the most impressions, and which posts are they on?"

  • "Audit https://example.com/guide and score it for AI answer engines."

  • "Find question-style queries we already get impressions for and tell me where a FAQ is missing."

  • "Check whether GPTBot, PerplexityBot and ClaudeBot can reach the homepage."

  • "Before we move to the new host, verify every URL with traffic still resolves on new.example.com."

  • "Rewrite the SEO title and meta description of post 515 and publish it."

Tech stack

Layer

Choice

Notes

Runtime

Node.js ≥ 18, TypeScript 5, ES modules

no build-time codegen, tsc only

Protocol

@modelcontextprotocol/sdk

stdio for local clients, stateless Streamable HTTP for servers

Google

googleapis (Search Console v1, Analytics Data v1beta, Analytics Admin v1beta) + google-auth-library

REST clients, no gRPC; service account or OAuth

Web audits

cheerio, image-size, native fetch

PageSpeed Insights, CrUX, Knowledge Graph, Wikidata, Google Autocomplete, IndexNow, Perplexity, Brave, Places APIs over HTTPS

WordPress

ssh + WP-CLI, two PHP helpers uploaded on first use

Yoast indexable rebuild, cache purge (WP Rocket / Super Cache / W3TC / LiteSpeed), mu-plugin for JSON-LD

GitHub

REST + Git Data API

token from GITHUB_TOKEN or gh auth token

Validation

zod schemas per tool

descriptions double as LLM documentation

Quality

smoke test with tool-list snapshot, secret-scan git hooks

npm test, npm run check:secrets

Architecture

flowchart LR
    subgraph Clients
        CC[Claude Code]
        CD[Claude Desktop]
        HTTP[Any MCP client<br/>over HTTPS]
    end

    subgraph Server["google-seo-mcp"]
        direction TB
        T1[stdio transport]
        T2[Streamable HTTP<br/>Bearer auth · /healthz]
        S["createServer()<br/>annotations · read-only · toolsets · instructions"]
        subgraph Tools
            GSC[gsc.ts]
            GA[ga.ts]
            WEB[web.ts · crawl.ts]
            GEO[geo.ts]
            AN[analysis.ts]
            WP[wp.ts]
            GH[github.ts]
        end
        T1 --> S
        T2 --> S
        S --> Tools
    end

    subgraph External
        G[(Google APIs<br/>Search Console · GA4<br/>PageSpeed · CrUX · KG)]
        SITES[(Your websites)]
        WPH[(WordPress host<br/>WP-CLI over SSH)]
        GHA[(GitHub)]
        X[(Wikidata · IndexNow<br/>Perplexity · Brave · Places)]
    end

    CC --> T1
    CD --> T1
    HTTP --> T2
    GSC & GA --> G
    WEB & GEO & AN --> SITES
    GEO & AN --> X
    AN --> G
    WP --> WPH
    GH --> GHA

Request path. A client calls a tool → src/util.ts tool() wraps the handler (JSON result or an actionable isError) → the handler talks to one or more upstreams → results are flattened into compact JSON ({dimension: value, metric: number} rows, totals first). Long-running tools (pagespeed, site_crawl, migration_check) send progress notifications.

Cross-source analyses (ga_landing_page_seo, migration_check, cross_site_links, content_refresh_candidates, gsc_opportunities) reuse the Search Console query function and a shared URL-path normaliser so pages line up across GA4, Search Console, sitemaps and WordPress post IDs.

WordPress path. Every call is ssh host 'cd <wp> && wp …' with POSIX-quoted arguments; large payloads go over stdin. Two PHP helpers are uploaded to ~/.google-seo-mcp/ on the host when their hash changes. Yoast meta writes trigger an indexable rebuild and a cache purge so changes are live immediately.

Safety. Write tools are recognised by name and receive readOnlyHint:false (destructiveHint:true for deletes, raw WP-CLI and commits). --read-only drops them at registration; --toolsets=gsc,web trims the tool list (72 definitions ≈ 20k tokens). Server instructions tell the model that fetched page text and CMS content are untrusted data.

Quick start

Requirements: Node 18+, a Google Cloud project with the Search Console API, Google Analytics Data API and Google Analytics Admin API enabled.

git clone https://github.com/Akxan/google-seo-mcp.git
cd google-seo-mcp
npm install
npm run build
cp .env.example .env      # fill in credentials (see below)

Google credentials

Service account (recommended, works unattended): create a service account in the Cloud project, download its JSON key, set GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json in .env, then add the service-account email as a user on each Search Console property (permission Full) and each GA4 property (role Viewer).

Your own Google account (OAuth): create an OAuth client ID of type Desktop app, download client_secret.json, run

npm run auth -- --client-secret ./client_secret.json

and the resulting ~/.config/google-seo-mcp/credentials.json is picked up automatically.

Lookup order: GOOGLE_CREDENTIALS_JSON (inline) → GOOGLE_APPLICATION_CREDENTIALS~/.config/google-seo-mcp/credentials.json → Application Default Credentials.

Connect a client

Claude Code:

claude mcp add google-seo -- node /absolute/path/google-seo-mcp/dist/index.js

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "google-seo": {
      "command": "node",
      "args": ["/absolute/path/google-seo-mcp/dist/index.js"]
    }
  }
}

The server reads .env from its own directory at startup, so client configs need nothing but the command. Environment variables passed by the client take precedence.

Configuration

All settings live in .env (see .env.example, which documents every key).

Variable

Purpose

GOOGLE_APPLICATION_CREDENTIALS / GOOGLE_CREDENTIALS_JSON

Google auth

PAGESPEED_API_KEY

PageSpeed Insights (free; without it you share a public quota that is usually exhausted)

CRUX_API_KEY, GOOGLE_API_KEY

Chrome UX Report API, Knowledge Graph Search API (free; fall back to PAGESPEED_API_KEY)

BRAVE_API_KEY, PERPLEXITY_API_KEY, GOOGLE_PLACES_API_KEY

optional: brand mentions, AI citation check, Google reviews

INDEXNOW_KEY, INDEXNOW_KEY_LOCATION

optional: IndexNow submissions

GITHUB_TOKEN

GitHub tools (falls back to gh auth token)

WP_SITES

JSON array of WordPress sites reachable over SSH; omit to disable wp_* tools

SEO_MCP_READ_ONLY=1 or --read-only

register no write tools

SEO_MCP_TOOLSETS or --toolsets=

comma list of gsc,ga4,web,geo,analysis,wordpress,github

MCP_TRANSPORT=http, MCP_HOST, MCP_PORT, MCP_PATH, MCP_AUTH_TOKEN

HTTP mode

Tools that need an optional key return an error explaining how to obtain it instead of silently disappearing.

WordPress over SSH

WP_SITES=[{"name":"mysite","host":"1.2.3.4","port":22,"user":"ssh_user","path":"domains/example.com/public_html"}]

Needs WP-CLI on the host and passwordless SSH from the machine running the server. Posts built with BeTheme's Muffin Builder (empty post_content) are handled by the wp_builder_* tools. wp_set_schema installs a 5-line mu-plugin that prints stored JSON-LD in <head>.

Running as a 24/7 HTTP server

MCP_TRANSPORT=http MCP_AUTH_TOKEN=$(openssl rand -hex 32) node dist/index.js --http
curl http://127.0.0.1:8080/healthz

Stateless Streamable HTTP: a fresh server instance per request, Bearer-token auth, loopback bind by default. deploy/ contains a systemd unit, an env-file example and Caddy/Nginx reverse-proxy samples (Nginx needs proxy_buffering off). Dockerfile and docker-compose.yml are provided. Connect remote clients with

claude mcp add --transport http google-seo https://mcp.example.com/mcp --header "Authorization: Bearer <token>"

Development

npm run dev            # tsx src/index.ts (stdio, no build)
npm run build          # tsc -> dist/
npm test               # smoke test: descriptions, annotations, instructions, tool-list snapshot
npm run inspector      # MCP Inspector against dist/
npm run check:secrets  # scan tracked files for keys / personal data (also pre-commit and pre-push hooks)
src/
├── index.ts        entry: stdio or --http
├── server.ts       createServer(): registration wrapper, annotations, read-only, toolsets, instructions
├── http.ts         Streamable HTTP transport with Bearer auth
├── google.ts       GoogleAuth + googleapis clients
├── env.ts          .env loader
├── util.ts         tool() wrapper, error formatting, date helpers, progress heartbeat
└── tools/          gsc · ga · web · crawl · geo · analysis · wp · github
scripts/            wp-helper.php · mfn-builder.php (uploaded to the WordPress host) · check-secrets.sh
deploy/             systemd · Caddy · Nginx samples
test/               smoke test + tool snapshot

Notes and limits

  • Search Console data lags 2–3 days; end date ranges at 3daysAgo. URL Inspection has a ~2,000 calls/day quota per property.

  • PageSpeed runs take 15–60 s; the tool retries once and sends progress notifications. Pages that never become idle cannot be audited by Lighthouse.

  • CrUX only has data for origins with enough Chrome traffic.

  • All fetched page text and CMS content is untrusted third-party data; the server instructions tell the model not to follow instructions found in it.

Contributing

Issues and pull requests are welcome. Run npm test and npm run check:secrets before pushing; add new tools to the matching src/tools/*.ts module, give every parameter a .describe(), and update this README.

Keywords

MCP server · Model Context Protocol · SEO MCP · GEO · generative engine optimization · AI SEO agent · Claude MCP · Claude Code · Google Search Console API · Google Analytics 4 API · GA4 Data API · PageSpeed Insights API · Core Web Vitals · CrUX · technical SEO audit · site crawler · structured data · schema.org · JSON-LD · FAQPage · llms.txt · AI crawlers · GPTBot · ClaudeBot · PerplexityBot · robots.txt · sitemap · hreflang · keyword cannibalization · striking distance keywords · content decay · E-E-A-T · Knowledge Graph · IndexNow · WordPress SEO automation · Yoast SEO · WP-CLI · TypeScript

Star history

Star History Chart

License

MIT

Available Tools

51 tools
ai_citation_checkCheck AI answer citations (Perplexity)A
Read-onlyIdempotent

Ask Perplexity's Sonar API a question a customer might ask and report which sources it cites, whether your domain is among them, and the answer text. Useful to see if the site is being cited by AI search for target queries. Requires PERPLEXITY_API_KEY (paid, cents per call). ChatGPT and Google AI Overviews have no such API.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNosonar
domainYesYour domain to look for in the citations, e.g. 'example.com'.
countryNoOptional 2-letter country code for localized search, e.g. 'ES', 'US'.
questionYesA natural question, e.g. 'What is the best guided walking tour in Seville?'

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds meaningful context: the need for PERPLEXITY_API_KEY (auth) and cost (cents per call). It does not contradict annotations.

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

Conciseness5/5

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

Three sentences: purpose, use case, and requirements. No fluff, information is front-loaded. Every sentence contributes.

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

Completeness4/5

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

The description explains the output content (sources cited, domain presence, answer text) and the API key requirement. For a read-only tool with no output schema, this is sufficient. Minor gaps like error handling or rate limits are not critical.

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

Parameters3/5

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

Schema coverage is 75% (domain and question have descriptions; model and country do not). The description implicitly clarifies the question and domain parameters but adds no detail about model or country. It provides marginal value beyond the schema.

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

Purpose5/5

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

The description states a specific verb ('Ask Perplexity's Sonar API') and a clear outcome (report citations, domain presence, answer text). It is distinct from all sibling tools, which focus on other aspects like robots, sitemaps, or Google data. No other tool addresses AI citation checking.

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

Usage Guidelines4/5

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

It provides a clear use case ('see if the site is being cited by AI search for target queries') and prerequisites (API key, paid). It does not explicitly name alternative tools for when not to use it, but the uniqueness of the function makes the context sufficient.

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

ai_crawler_accessAI crawler access checkA
Read-onlyIdempotent

Check whether AI and search crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, PerplexityBot, Google-Extended, Googlebot, Bingbot, Applebot, Amazonbot, Meta, CCBot, Bytespider...) can reach a page: robots.txt rules for the site root and for the URL, plus a live request with each bot's User-Agent to detect UA-based blocks (e.g. Cloudflare 'block AI bots', WAF rules). Being blocked from OAI-SearchBot, PerplexityBot or Claude-SearchBot means the site cannot be cited by those assistants.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesA representative page, e.g. the homepage or an important article.
liveFetchNoAlso request the page with each bot UA (one request per bot).

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, lowering the bar. The description adds that it performs live requests with each bot's User-Agent, which is a behavioral trait not fully covered by annotations, and notes detection of UA-based blocks. This adds valuable context beyond the structured fields.

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

Conciseness3/5

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

The description is a dense two-sentence paragraph listing many crawlers and explaining consequences. While it is front-loaded with the main action, it is not concise and could be trimmed without losing key information. It is informative but not optimized for quick scanning.

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

Completeness4/5

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

Given there is no output schema, the description does not explain what the result looks like, but it clearly explains the method and the significance of blocked bots. Annotations cover safety, and the tool's purpose is well understood. It is fairly complete 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.

Parameters3/5

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

Schema description coverage is 100%, and both parameters (url and liveFetch) are already documented in the schema. The description does not add significant meaning beyond the schema, except noting the URL should be representative. Baseline 3 is appropriate when the schema handles the details.

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

Purpose4/5

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

The description clearly states the tool checks whether AI and search crawlers can reach a page, and details the method (robots.txt rules and live UA requests). It is specific about the resource and lists many crawlers, but does not explicitly differentiate from the sibling robots_check tool, which likely performs a similar check.

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

Usage Guidelines3/5

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

The description implies the tool is for AI crawler access and mentions consequences of being blocked, but it does not explicitly state when to use this tool instead of alternatives like robots_check or ai_citation_check. There is no exclusion or comparison with siblings, leaving usage to inference.

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

brand_mentionsBrand mentions on the web (Brave Search)A
Read-onlyIdempotent

Search the web for pages mentioning a brand name that are not on your own domain, and check whether each mentioning page links to you. Unlinked mentions are outreach targets for links; the list also shows what context AI engines associate with the brand. Requires BRAVE_API_KEY (free tier available at brave.com/search/api).

ParametersJSON Schema
NameRequiredDescriptionDefault
brandYes
countNo
domainYesYour domain, excluded from results and used to detect links.
countryNoes
languageNoen
checkLinksNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds value by disclosing an external API key requirement and describing the output behavior (link detection and AI context). No contradictions found.

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

Conciseness5/5

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

The description is three sentences with no filler. It leads with the core action, then explains the purpose and adds the key prerequisite, all in a tight structure. Every sentence contributes to understanding.

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

Completeness3/5

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

The tool has 6 parameters, an external API dependency, and no output schema. The description gives a high-level output hint (list of mentions with link status and AI context) but omits details on response structure, pagination, error handling, rate limits, or behavior when the API key is invalid. For a tool with these complexities, more specifics would be needed for fully autonomous invocation.

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

Parameters2/5

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

Schema description coverage is only 17% (domain only). The description clarifies the roles of 'brand' and 'domain' implicitly ('brand name', 'your own domain') but provides no information about count, country, language, or checkLinks. With such low coverage, the description must compensate but does not, leaving several parameters ambiguous.

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

Purpose5/5

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

The description uses specific verbs and resources: 'Search the web for pages mentioning a brand name' and explicitly scopes to 'not on your own domain' while adding the link-checking purpose. It clearly distinguishes from siblings like keyword_suggest or ai_citation_check by focusing on unlinked mentions and outreach targets.

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

Usage Guidelines3/5

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

The description implies a use case ('outreach targets for links') and states a prerequisite (BRAVE_API_KEY), but it does not explicitly mention when to prefer this tool over alternatives or provide exclusions. The context is clear but not directive, so agents must infer applicability from the surrounding toolset.

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

compare_pagesCompare your page with competitor pagesA
Read-onlyIdempotent

Audit several URLs (yours plus pages ranking above you) side by side: word count, title/description, heading counts and outline, lists/tables, images, internal/external links, schema types, fetch time, HTML size. Also extracts the most frequent content terms of each page and lists terms competitors use that your page lacks (content-gap hint).

ParametersJSON Schema
NameRequiredDescriptionDefault
yourUrlYes
gapTermsNo
competitorUrlsYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds value by enumerating exactly what data is extracted (word count, heading counts, content terms, etc.) and the content-gap hint, giving the agent a clear picture of the operation's scope without contradicting annotations.

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

Conciseness4/5

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

The description is compact, two sentences, with the core purpose front-loaded and details listed in a structured manner. No redundant filler, though the list of metrics is extensive, it is still efficient.

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

Completeness3/5

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

For a tool with no output schema, the description lists the data points it returns but does not explain the output format or structure. It also omits clarification of the gapTerms parameter and does not mention that pages are fetched live, though openWorldHint implies external access. Given the complexity, 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.

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It implicitly maps 'yourUrl' and 'competitorUrls' via the text, but the 'gapTerms' parameter is entirely undocumented in both the schema and the description. The agent cannot infer its purpose or constraints from the description alone.

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

Purpose5/5

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

The description clearly states the tool's function: auditing multiple URLs side by side, listing specific metrics (word count, headings, links, schema types, etc.) and explicitly mentions comparing 'yours plus pages ranking above you'. This differentiates it from single-page audit tools like page_audit and structured_data_audit.

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

Usage Guidelines3/5

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

The description implies usage for competitive analysis but does not explicitly state when to use this over alternatives, nor does it mention any exclusions or conditions. It provides context (comparing with competitor pages) but lacks explicit routing guidance.

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

content_refresh_candidatesContent refresh candidates (decaying pages)A
Read-onlyIdempotent

Find pages whose clicks or impressions dropped between two periods and that have not been updated recently (sitemap lastmod), with the queries they lost the most on. These are the best candidates for a content refresh: update facts, expand answers, add FAQ, re-publish with a new dateModified.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
siteUrlYesSearch Console property, e.g. 'sc-domain:example.com'.
staleDaysNoConsider a page stale if lastmod is older than this many days (or unknown).
currentEndNo3daysAgo
sitemapUrlNoSitemap to read lastmod dates from (index supported).
previousEndNo91daysAgo
currentStartNo90daysAgo
previousStartNo180daysAgo
minPreviousClicksNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so safety is covered. The description adds behavioral details: it compares two periods, uses sitemap lastmod for staleness, and returns top losing queries. It does not describe output format or pagination, but these are minor given the read-only nature.

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

Conciseness5/5

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

Two tightly written sentences with zero filler. The primary purpose is front-loaded, and the actionable context follows naturally. Every word earns its place.

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

Completeness4/5

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

For an analysis tool with 9 parameters and no output schema, the description covers the selection logic well but omits details about the return format (e.g., whether it returns a list with metrics, sorting, or pagination). Still, given the read-only nature and clear purpose, an agent can reasonably infer expected output. The description is sufficient for most use cases.

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

Parameters3/5

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

Schema description coverage is only 33%, so the description should compensate for the undocumented parameters. It references 'two periods' and 'sitemap lastmod', which loosely maps to the date-range and sitemap parameters, but it does not explain top, minPreviousClicks, or the default periods. The description adds some meaning but not enough for a tool with 9 parameters.

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

Purpose5/5

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

The description uses a specific verb ('Find') and clearly specifies the resource ('pages') with precise criteria (clicks/impressions dropped, not updated recently). It distinguishes itself from sibling GSC analysis tools by focusing on content refresh candidates rather than generic opportunities or CTR reports.

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

Usage Guidelines4/5

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

The description implies when to use it ('best candidates for a content refresh') and even suggests follow-up actions, providing clear context. However, it does not explicitly name alternative tools or state when not to use it, leaving some inference to the agent.

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

crux_historyCore Web Vitals field history (CrUX)
Read-onlyIdempotent

Real-user Core Web Vitals from the Chrome UX Report History API for an origin or URL: weekly p75 of LCP, INP, CLS, FCP, TTFB over the last ~25 weeks and the share of good/needs-improvement/poor. Needs the 'Chrome UX Report API' enabled on the GCP project and a key in CRUX_API_KEY / GOOGLE_API_KEY / PAGESPEED_API_KEY. Returns 404 when the page has too little traffic for CrUX; try the origin instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoorigin
weeksNo
targetYesPage URL or origin (https://example.com).
formFactorNoPHONE
eeat_auditE-E-A-T site auditA
Read-onlyIdempotent

Site-level trust signals that search and AI engines weigh: About and Contact pages, privacy/terms, visible address and phone, Organization/LocalBusiness schema on the homepage, review/rating schema, social profiles (sameAs), author pages, HTTPS, plus a sample of articles checked for bylines and dates. Returns a pass/fail checklist with what to add.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteUrlYes
sampleArticlesNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds behavioral detail: it returns a pass/fail checklist with recommendations, and it checks a sample of articles for bylines and dates. This goes beyond the annotations and gives the agent a concrete sense of what will happen.

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

Conciseness4/5

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

The description is a single sentence with a list of checks, which is efficient and front-loads the core purpose ('Site-level trust signals'). The list is dense but every item is relevant to E-E-A-T. No redundant fluff.

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

Completeness4/5

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

The description explains the tool's scope, the checks performed, and the output (pass/fail checklist with what to add). It does not explicitly define the sampleArticles parameter's role, but given the simple schema and read-only nature, it is reasonably complete 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.

Parameters3/5

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

The description mentions 'a sample of articles' which implicitly relates to the sampleArticles parameter, but it does not explicitly state that sampleArticles controls the sample size or its constraints (default 5, max 20). Since schema coverage is 0%, the description could compensate more, but the intent is partially conveyed. siteUrl is self-evident.

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

Purpose5/5

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

The description clearly states the tool audits site-level trust signals for search and AI engines, listing specific elements checked (About/Contact pages, schema, social profiles, etc.) and the return format (pass/fail checklist). This is a specific verb+resource with a distinct scope, easily differentiated from siblings like structured_data_audit which focus narrowly on schema validation.

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

Usage Guidelines4/5

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

The description explicitly scopes to 'site-level' trust signals, which implies it is for whole-site audits rather than page-level analysis. It does not name alternatives or provide when-not-to-use guidance, but the context is clear enough to infer appropriate usage.

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

ga_compare_periodsGA4 period comparisonA
Read-onlyIdempotent

Compare GA4 metrics between a current and a previous period, broken down by dimensions (default: channel group). Returns per-row current/previous/delta/percent change plus period totals. Use it for 'how did organic traffic change vs last month'.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoRows returned (sorted by absolute change of the first metric).
metricsNo
currentEndNoyesterday
dimensionsNo
propertyIdYesGA4 property ID, e.g. '123456789' or 'properties/123456789'. Use ga_list_properties to discover it.
previousEndNo29daysAgo
currentStartNo28daysAgo
previousStartNo56daysAgo
dimensionFiltersNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering safety and side-effect semantics. The description adds behavioral context beyond this: it states the output structure ('per-row current/previous/delta/percent change plus period totals') and the default breakdown by dimensions. This is valuable, though it does not mention edge cases like missing data or handling of zero denominators. Given the annotation coverage, this is a solid disclosure.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose and output characteristics, followed by a concrete usage example. There is no fluff, and every sentence contributes to the agent's understanding. It is efficiently structured and easy to parse.

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

Completeness2/5

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

With 9 parameters, low schema coverage (22%), and no output schema, the description is incomplete. It does not explain how the four date parameters (currentStart, currentEnd, previousStart, previousEnd) define the two periods, nor does it describe the dimensionFilters object structure or allowed match types. The description leaves significant gaps that an agent must infer or discover by trial, which is risky 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.

Parameters2/5

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

Schema description coverage is only 22% (only propertyId and limit have descriptions). The description does not compensate for the other 7 parameters. It mentions the default dimensions but does not explain metrics, currentStart, previousStart, currentEnd, previousEnd, or dimensionFilters. Parameter names are somewhat self-explanatory (e.g., 'currentStart'), but the description adds minimal semantic value beyond the schema. For a low-coverage schema, the description should carry more explanatory weight; it does not.

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

Purpose4/5

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

The description states a clear purpose: 'Compare GA4 metrics between a current and a previous period, broken down by dimensions'. The verb 'compare' and resource 'GA4 metrics' are specific, and the default dimension (channel group) is mentioned. While it doesn't explicitly contrast with sibling tools like ga_run_report or gsc_compare_periods, the 'GA4' qualifier and comparison focus make its intent distinct enough.

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

Usage Guidelines4/5

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

The description provides a concrete use case: 'Use it for "how did organic traffic change vs last month"'. This gives the agent a clear scenario for invoking the tool. However, it does not mention when NOT to use it (e.g., for real-time data or complex custom reports), nor does it reference alternatives like ga_run_report for more flexible queries. It gives a useful but not exhaustive guideline.

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

ga_get_metadataGA4 dimensions & metrics metadataA
Read-onlyIdempotent

List the dimensions and metrics available for a GA4 property (including custom ones). Filter by a search string to keep the output small.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoall
searchNoCase-insensitive substring matched against API name, UI name and category, e.g. 'page', 'conversion'.
propertyIdYesGA4 property ID, e.g. '123456789' or 'properties/123456789'. Use ga_list_properties to discover it.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering safety and side effects. The description adds the behavior that it includes custom dimensions/metrics and that the output can be large without a search filter, which are useful non-obvious details. No contradiction with annotations.

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

Conciseness5/5

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

The description is two short sentences with no filler. It front-loads the core action and then provides a practical filtering tip. Every word earns its place.

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

Completeness4/5

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

For a metadata listing tool with a required propertyId and optional kind/search, the description covers the essential purpose and filtering behavior. It does not detail the return structure, but the absence of an output schema and the simplicity of the tool make that less critical. Annotations cover the safety profile, so nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 67% (propertyId and search have descriptions; kind does not). The description reinforces the search parameter's purpose and implies kind through 'dimensions and metrics', but it does not add substantial semantics beyond what the schema already provides. Baseline of 3 is appropriate given high schema coverage.

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

Purpose5/5

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

The description clearly states the verb ('List') and the resource ('dimensions and metrics available for a GA4 property'), and adds specificity with 'including custom ones'. It is distinct from siblings like ga_list_properties (which lists properties) and ga_run_report (which runs reports), so an agent can immediately tell what this tool does.

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

Usage Guidelines4/5

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

The description gives clear context (listing available dimensions/metrics for a property) and even hints at usage by advising to filter with a search string to keep output small. However, it does not explicitly mention when to prefer this over alternatives, nor does it state exclusions. The context is sufficient for most agents to select it appropriately.

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

ga_landing_page_seoOrganic landing pages: GA4 + Search Console mergedA
Read-onlyIdempotent

One table per landing page combining GA4 organic-search behaviour (sessions, engagement rate, bounce rate, avg. session duration, key events) with Search Console performance (clicks, impressions, CTR, position) for the same period. Requires both the GA4 property and the Search Console property of the same site.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sortByNoclicks
endDateNo3daysAgo
siteUrlYesSearch Console property for the same site, e.g. 'sc-domain:example.com'.
startDateNo28daysAgo
propertyIdYesGA4 property ID, e.g. '123456789' or 'properties/123456789'. Use ga_list_properties to discover it.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the requirement of both properties but does not disclose behavior for missing data, invalid dates, or how the merge handles pages present in only one source. Given strong annotations, the bar is lower, but the description adds only marginal context.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the core purpose and then lists the metrics and requirement. It has no redundancy or filler, making it efficient and easy to parse.

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

Completeness2/5

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

The tool merges two data sources and has 6 parameters, yet no output schema is provided. The description does not specify the output structure (beyond 'one table per landing page'), error handling, or parameter behaviors. Given the complexity and absence of an output schema, the description leaves critical details for correct invocation unexplained.

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

Parameters2/5

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

Schema description coverage is only 33% (siteUrl and propertyId have descriptions), so the description should compensate for the other four parameters (limit, sortBy, startDate, endDate). It does not explain their semantics or how they interact with the merged metrics. It only indirectly covers the two required parameters, leaving a significant gap for the rest.

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

Purpose5/5

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

The description clearly states the tool's purpose: to merge GA4 organic-search behavior with Search Console performance into one table per landing page. The verb 'combining' and specific resource ('landing page') make it distinct from sibling tools like gsc_search_analytics (Search Console only) and ga_run_report (GA4 only), which is a clear differentiation.

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

Usage Guidelines3/5

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

The description mentions a prerequisite ('Requires both the GA4 property and the Search Console property of the same site') but does not explicitly state when to use this tool versus alternatives (e.g., running separate queries). It implies usage but lacks explicit contrast with siblings, so the guidance is only partially provided.

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

ga_list_propertiesList GA4 propertiesA
Read-onlyIdempotent

List all Google Analytics accounts and GA4 properties the authorized account can access. Requires the Analytics Admin API to be enabled.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description doesn't need to repeat those. It adds valuable context by noting the prerequisite that the Analytics Admin API must be enabled and that the listing is scoped to the authorized account, which goes beyond the annotations.

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

Conciseness5/5

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

Two concise sentences: the first states the core action and resource, the second adds a necessary prerequisite. No filler or redundancy; every word earns its place.

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

Completeness4/5

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

For a simple list tool with no parameters and safety annotations, the description is sufficiently complete. It specifies what is listed and the API requirement. It doesn't mention output format or pagination, but these are minor for a tool of this simplicity.

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

Parameters4/5

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

There are zero parameters, so the schema has full coverage and no parameter documentation is needed. The baseline for 0 params is 4, and the description doesn't need to add anything about parameters since none exist.

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

Purpose5/5

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

The description states a specific verb ('List'), a precise resource ('Google Analytics accounts and GA4 properties'), and the scope ('the authorized account can access'). It is unambiguous and clearly differentiates from sibling tools like ga_run_report, which run reports rather than list resources.

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

Usage Guidelines3/5

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

The description implies its use for discovery of accessible accounts/properties, but it does not explicitly contrast it with alternatives or state when not to use it. The context is clear enough for an agent to infer the purpose, but no explicit routing guidance is given.

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

ga_run_realtime_reportGA4 realtime reportA
Read-onlyIdempotent

Real-time (last 30 minutes) GA4 data. Dimensions: country, city, deviceCategory, unifiedScreenName, eventName, minutesAgo. Metrics: activeUsers, screenPageViews, eventCount, keyEvents.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
metricsNo
dimensionsNo
propertyIdYesGA4 property ID, e.g. '123456789' or 'properties/123456789'. Use ga_list_properties to discover it.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds the time window (last 30 minutes) and lists available dimensions/metrics, which is useful behavioral context beyond annotations. It does not disclose potential limitations like data availability or latency, but given the annotation coverage, this is sufficient.

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

Conciseness5/5

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

The description is a single, dense sentence that front-loads the core purpose (real-time GA4 data) and then lists supported dimensions and metrics. Every word adds value, with no fluff or repetition. It is optimally concise.

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

Completeness4/5

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

For a simple read-only tool, the description covers the essential aspects: data freshness (last 30 minutes) and valid dimensions/metrics. It does not mention pagination or limit behavior, but the schema provides defaults and bounds. There is no output schema, but the description implies the nature of the returned data. Overall, it is complete enough for an agent to call the tool correctly.

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

Parameters4/5

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

Schema description coverage is only 25% (propertyId has a description). The description compensates by listing valid dimension and metric names, which directly informs the 'dimensions' and 'metrics' array parameters. This adds meaning beyond the schema, though it does not explain the format of arrays or default behaviors (covered by defaults in schema). The propertyId hint in the schema is also helpful.

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

Purpose5/5

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

The description clearly states the tool provides real-time GA4 data for the last 30 minutes, listing specific dimensions and metrics. This distinguishes it from sibling tools like ga_run_report (which likely handles historical data) and ga_compare_periods. The verb 'Real-time' and resource 'GA4 data' are explicit and unambiguous.

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

Usage Guidelines3/5

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

The description implies usage for real-time data by stating 'last 30 minutes', but does not explicitly say when to use this tool versus alternatives such as ga_run_report. There is no direct statement of 'use this for immediate data' or 'use ga_run_report for historical data'. The real-time scope is a clear hint, but explicit guidance is missing.

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

ga_run_reportGA4 reportB
Read-onlyIdempotent

Run a Google Analytics 4 Data API report. Common dimensions: date, pagePath, landingPage, sessionDefaultChannelGroup, sessionSource, sessionMedium, country, deviceCategory, eventName. Common metrics: sessions, activeUsers, totalUsers, newUsers, screenPageViews, engagementRate, averageSessionDuration, bounceRate, conversions, eventCount, keyEvents. Use ga_get_metadata to discover more. Optionally add a comparison date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
endDateNoyesterday
metricsNo
orderByNoSort order. Defaults to first metric descending.
startDateNoYYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo'.28daysAgo
dimensionsNo
propertyIdYesGA4 property ID, e.g. '123456789' or 'properties/123456789'. Use ga_list_properties to discover it.
metricFilterNoRaw GA4 FilterExpression JSON. Overrides metricFilters when given.
keepEmptyRowsNo
metricFiltersNoSimple AND-ed metric filters (applied after aggregation).
compareEndDateNo
dimensionFilterNoRaw GA4 FilterExpression JSON. Overrides dimensionFilters when given.
compareStartDateNoOptional second date range start; adds a 'dateRange' dimension to rows.
dimensionFiltersNoSimple AND-ed dimension filters.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description need not repeat these. It adds context that a comparison date range introduces a 'dateRange' dimension and lists common dimensions/metrics, but it does not disclose return format, pagination behavior, or rate limits. This is acceptable given the annotations.

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

Conciseness4/5

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

The description is concise, front-loaded with the core purpose, and uses a few sentences to convey key information. The list of common dimensions/metrics is useful but slightly lengthy; it earns its place by guiding parameter selection. No unnecessary fluff.

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

Completeness4/5

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

For a report tool with no output schema, the description provides enough to call it correctly: property ID, dimensions, metrics, date range, and optional comparison. It points to ga_get_metadata for extended metadata. Missing details like return format are minor given the tool's nature and the provided annotations.

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

Parameters4/5

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

Schema coverage is 53%, and the description compensates by listing common dimensions and metrics, which helps agents populate the arrays. It also explains that compareStartDate adds a 'dateRange' dimension, adding meaning beyond the schema. The pointer to ga_get_metadata further supports parameter discovery.

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

Purpose4/5

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

The description clearly states the tool runs a Google Analytics 4 Data API report, lists common dimensions and metrics, and points to ga_get_metadata for discovery. It implies a distinction from real-time and comparison tools but does not explicitly contrast with siblings like ga_run_realtime_report or ga_compare_periods.

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

Usage Guidelines2/5

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

The only usage guidance is 'Use ga_get_metadata to discover more.' It does not state when to use this tool versus alternatives like ga_run_realtime_report or ga_compare_periods, nor does it mention prerequisites or exclusions. The optional comparison date range hints at overlap with ga_compare_periods but is not clarified.

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

geo_page_scoreGEO readiness score of a page
Read-onlyIdempotent

Score how easily AI answer engines (ChatGPT, Perplexity, Google AI Overviews) can extract and cite a page: direct answer in the first paragraph, question-style headings, FAQ section and FAQPage schema, lists/tables, quotable statistics, summary section, author and dates (E-E-A-T), outbound citations, structured data. Returns a 0-100 score, the signals found and concrete fixes.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
github_commit_filesCommit file changes to GitHubA
Destructive

Create one commit on a branch that adds/updates/deletes several files atomically (Git Data API), then the branch is updated so the site's CI/CD (e.g. Cloudflare Pages) deploys it. Send the full new content of each file; read the current content first with github_get_file and apply your edit locally. Set createBranch to work on a new branch off the default branch instead of committing directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository as 'owner/name', e.g. 'octocat/my-site'.
filesYes
branchYesBranch to commit to, e.g. 'main'.
messageYesCommit message. Follow the repository's conventions (language, style).
createBranchNoIf true, create `branch` from the repo's default branch when it does not exist yet.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark destructiveHint=true and readOnlyHint=false, and the description reinforces this by mentioning 'adds/updates/deletes' and 'atomically'. It adds useful context about the branch update triggering CI/CD and the requirement to provide full file content. No contradiction with annotations.

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

Conciseness5/5

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

The description is concise, front-loaded with the core action and purpose, then provides practical usage instructions in a few sentences. Every sentence adds value without redundancy.

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

Completeness4/5

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

The description is complete for a mutation tool: it covers the workflow (read, modify, commit), mentions atomicity, CI/CD implications, and branching options. It lacks explicit error handling or return format details, but since there is no output schema and annotations provide safety hints, this is adequate.

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

Parameters3/5

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

Schema coverage is 80%, so most parameters are described in the schema. The description adds extra meaning by explaining the content parameter should hold full new file content and that createBranch creates from the default branch. However, it doesn't add much beyond what the schema already covers, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states a specific action: creating one commit that adds/updates/deletes files atomically via the Git Data API, with the downstream effect on CI/CD deployment. It distinguishes itself from sibling tools like github_get_file (read) and github_list_commits (list) by naming the commit creation and file changes.

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

Usage Guidelines4/5

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

The description gives explicit workflow guidance: read files first with github_get_file, send full new content, and use createBranch for new branches. It implies when to use this tool (for commit changes) versus when to use the read tool, though it doesn't explicitly state 'do not use this for reading' – but the guidance is clear enough.

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

github_get_fileRead a file from GitHub
Read-onlyIdempotent

Read a file (text) from a repository branch. Returns content, sha (needed for edits), size and the branch's latest commit. Files over 1 MB are refused; use github_list_dir to browse.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoBranch, tag or commit; defaults to the default branch.
pathYes
repoYesRepository as 'owner/name', e.g. 'octocat/my-site'.
github_list_commitsRecent commits
Read-onlyIdempotent

List recent commits of a branch, optionally only those touching a path.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo
repoYesRepository as 'owner/name', e.g. 'octocat/my-site'.
limitNo
branchNo
github_list_dirList a directory in GitHubB
Read-onlyIdempotent

List files and folders at a path in a repository (name, type, size, sha).

ParametersJSON Schema
NameRequiredDescriptionDefault
refNo
pathNo
repoYesRepository as 'owner/name', e.g. 'octocat/my-site'.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the return field set (name, type, size, sha) and implies a non-recursive listing, but does not disclose potential edge cases (e.g., missing path, pagination, or whether subdirectories are included). Given the annotation coverage, this is adequate but not rich.

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

Conciseness5/5

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

The description is a single, focused sentence that immediately states the core purpose and the returned information. It is concise, front-loaded, and contains no filler. Every word adds value.

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

Completeness3/5

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

For a simple listing tool with three parameters and no output schema, the description covers the basic return fields and purpose. However, it omits clarification on the 'ref' parameter, recursion behavior, and error conditions. It also does not reference any sibling tools to guide selection, which is a gap given the large sibling set. The description is functional but not fully complete for an agent operating autonomously.

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

Parameters2/5

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

Schema description coverage is only 33% (only 'repo' has a description). The tool description mentions 'path' implicitly but does not explain the 'ref' parameter at all. It also does not clarify default behavior for 'path' (default is '') or the meaning of 'ref'. With low schema coverage, the description should compensate but does not add meaningful parameter semantics beyond what is already in the schema.

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

Purpose5/5

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

The description clearly states the action ('List files and folders') and the resource ('at a path in a repository'), and it enumerates the returned fields (name, type, size, sha). This distinguishes it from sibling tools like github_get_file (which retrieves file content) and github_list_commits (which lists commits). The purpose is unambiguous and specific.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention any conditions for selection, exclusions, or prerequisites. The intended usage must be inferred from the tool's name and context, which is not explicit.

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

github_search_codeSearch code in a repository
Read-onlyIdempotent

Search file contents in one repository (GitHub code search syntax, e.g. 'og:image path:src', 'canonical extension:astro'). Returns matching files with fragments. Indexed for the default branch only.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesRepository as 'owner/name', e.g. 'octocat/my-site'.
limitNo
queryYes
google_auth_statusCheck Google credentialsA
Read-onlyIdempotent

Verify which Google credentials are in use and that an access token can be obtained. Run this first if other tools fail.

ParametersJSON Schema
NameRequiredDescriptionDefault
verboseNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, covering safety. The description adds that it checks token obtainability, which is a behavioral trait, but it doesn't disclose response format or error behavior. With annotations covering the safety profile, the description adds modest value.

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

Conciseness5/5

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

Two sentences with no wasted words. The first sentence states the primary function, and the second gives usage guidance. Information is front-loaded and easy to scan.

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

Completeness3/5

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

For a simple tool with one optional parameter and annotations covering safety, the description is mostly adequate: it explains purpose and when to use. However, the lack of any explanation for the 'verbose' parameter leaves a gap, and the return value is not described. It's a minimum viable description but not fully complete.

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

Parameters1/5

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

The schema has a single optional boolean parameter 'verbose' with 0% description coverage. The description does not mention this parameter at all, so it fails to compensate for the schema gap. An agent has no guidance on what 'verbose' does or how to use it.

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

Purpose5/5

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

The description clearly states the tool's function: verifying which Google credentials are in use and whether an access token can be obtained. It uses a specific verb (verify) and resource (Google credentials) and distinguishes it from the many sibling audit and data tools by focusing on authentication status.

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

Usage Guidelines5/5

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

It provides explicit guidance on when to use this tool: 'Run this first if other tools fail.' This establishes a clear condition for invocation and implies it serves as a diagnostic prerequisite, which is sufficient to differentiate it from alternatives.

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

gsc_cannibalizationKeyword cannibalizationA
Read-onlyIdempotent

Find queries for which two or more pages of the site receive impressions, i.e. pages competing against each other for the same keyword. Each result lists the competing pages with clicks, impressions and position so you can consolidate or differentiate them.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
endDateNoEnd date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). Search Console data lags ~2-3 days.3daysAgo
siteUrlYesProperty URL exactly as shown in Search Console, e.g. 'https://example.com/' or 'sc-domain:example.com'. Use gsc_list_sites to discover it.
startDateNoStart date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). Search Console data lags ~2-3 days.90daysAgo
searchTypeNoweb
minImpressionsPerPageNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral detail beyond annotations by explaining that results list competing pages with clicks, impressions, and position. It does not mention data lag or limits like top/minImpressionsPerPage, but it does not contradict the annotations and provides meaningful return-behavior context.

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

Conciseness5/5

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

The description is one well-structured sentence that front-loads the core behavior and then expands on result contents and intended use. Every clause contributes meaning, with no filler, repetition, or unnecessary detail. It is compact and easy to parse.

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

Completeness3/5

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

The description explains the core concept and result structure, but without an output schema it should provide more guidance on limits, default thresholds, and parameter behavior—especially since several parameters lack schema descriptions. The tool is relatively specialized, so basic usage is clear, but an agent would still need to infer details about minImpressionsPerPage and top. This is adequate but not complete.

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

Parameters2/5

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

Schema description coverage is only 50%, and the description does not compensate by explaining key parameters such as top, minImpressionsPerPage, or searchType. It mentions queries, impressions, clicks, and position, but these are output concepts rather than parameter semantics. The description adds little beyond what the schema already provides for startDate, endDate, and siteUrl, leaving several parameters ambiguous.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Find queries for which two or more pages of the site receive impressions'. This clearly defines the tool's purpose and differentiates it from sibling tools like gsc_search_analytics or gsc_opportunities, which address different GSC reporting needs. It also explains the downstream action ('consolidate or differentiate'), giving the agent an unambiguous sense of what this tool is for.

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

Usage Guidelines4/5

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

The description provides a clear context for when to use this tool: when pages are competing for the same keyword and you want to consolidate or differentiate them. It does not explicitly name alternatives or exclusion conditions, but the use case is stated well enough that an agent can match it to the user's intent. A fully explicit when-to-use versus alternatives statement would push this to 5.

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

gsc_compare_periodsCompare two periods in Search Console
Read-onlyIdempotent

Compare search performance between a current and a previous period for a single dimension (query or page). Returns rows with deltas, sorted by biggest click change, so you can spot winners and losers.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoHow many winners and losers to return.
filtersNo
siteUrlYesProperty URL exactly as shown in Search Console, e.g. 'https://example.com/' or 'sc-domain:example.com'. Use gsc_list_sites to discover it.
rowLimitNoRows fetched per period before joining.
dimensionNopage
currentEndYesCurrent period end date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). Search Console data lags ~2-3 days.
searchTypeNoweb
previousEndYesPrevious period end date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). Search Console data lags ~2-3 days.
currentStartYesCurrent period start date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). Search Console data lags ~2-3 days.
previousStartYesPrevious period start date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). Search Console data lags ~2-3 days.
gsc_ctr_opportunitiesCTR opportunities (page-1 rankings with weak CTR)A
Read-onlyIdempotent

Queries already ranking in the top positions whose CTR is far below the typical CTR for that position, weighted by impressions: the fastest wins from rewriting titles and meta descriptions. Benchmark CTR by position: 1: 28%, 2: 15%, 3: 11%, 4: 8%, 5: 7%, 6-10: 5-3%.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
endDateNoEnd date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). Search Console data lags ~2-3 days.3daysAgo
siteUrlYesProperty URL exactly as shown in Search Console, e.g. 'https://example.com/' or 'sc-domain:example.com'. Use gsc_list_sites to discover it.
dimensionNopage
startDateNoStart date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). Search Console data lags ~2-3 days.28daysAgo
searchTypeNoweb
maxPositionNo
minImpressionsNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already provide readOnly, idempotent, and non-destructive hints. The description adds value by explaining the underlying logic (weighted by impressions) and providing concrete CTR benchmarks by position, which goes beyond the annotations and helps interpret results.

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

Conciseness5/5

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

The description is two sentences with no filler. It leads with the core function and immediately provides actionable benchmarks, making it efficient and scannable.

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

Completeness3/5

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

With 8 parameters and no output schema, the description should explain what the tool returns. It implies a list of queries/pages but does not detail output fields, sorting, or caveats like data lag (though the schema mentions lag). It is adequate for understanding the concept but incomplete for a fully self-sufficient call.

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

Parameters3/5

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

Schema coverage is only 38%, so the description should compensate. It references 'top positions' (relating to maxPosition) and 'impressions' (relating to minImpressions) but does not explicitly define top, dimension, searchType, or other parameters. It adds some context but not enough to fully bridge the schema gap.

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

Purpose5/5

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

The description clearly states the tool finds queries ranking in top positions with CTR far below the position benchmark, weighted by impressions, and explicitly names the use case (fastest wins from rewriting titles/meta descriptions). This distinguishes it from siblings like gsc_search_analytics or gsc_opportunities, which are broader.

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

Usage Guidelines3/5

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

The description implies when to use it (when seeking CTR improvements from titles/meta) but does not explicitly mention alternatives or conditions for choosing this over gsc_opportunities or gsc_search_analytics. The guidance is implicit rather than explicit.

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

gsc_index_coverageBatch index coverage checkA
Read-onlyIdempotent

Run the URL Inspection API over a list of URLs (or the first N URLs of the site's sitemap) and summarize index status: indexed / not indexed, coverage state, robots state, last crawl, canonical mismatch. Costs one inspection call per URL against the ~2000/day quota, so keep batches small.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsNoExplicit URLs to inspect.
limitNoMax URLs when reading from the sitemap.
siteUrlYesProperty URL exactly as shown in Search Console, e.g. 'https://example.com/' or 'sc-domain:example.com'. Use gsc_list_sites to discover it.
sitemapUrlNoAlternatively, take URLs from this sitemap (index supported).
languageCodeNoen-US
onlyProblemsNoReturn only URLs that are not indexed or have a canonical mismatch.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds valuable operational context beyond annotations: it notes the cost of one inspection call per URL against the ~2000/day quota and advises keeping batches small. No contradictions with annotations.

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

Conciseness5/5

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

The description is two sentences: the first front-loads the purpose and output fields, the second adds a crucial cost warning. No redundant words or padding.

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

Completeness4/5

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

Given the complexity (6 parameters, no output schema), the description covers purpose, input modes (list or sitemap), output fields summarized, and cost. It sufficiently prepares an agent to decide when to use it and what to expect, though it could elaborate on exact response formatting.

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

Parameters3/5

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

Schema description coverage is 83% (5 of 6 parameters have descriptions). The description mentions the urls/sitemap usage patterns and the limit concept, but does not add new semantics beyond the schema. Since schema coverage is high, baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool runs the URL Inspection API over a batch of URLs or a sitemap and summarizes index status with specific fields (indexed, coverage state, robots state, last crawl, canonical mismatch). This is a specific verb+resource and distinguishes it from single-URL inspection tools like gsc_inspect_url.

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

Usage Guidelines4/5

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

The description provides clear context for batch usage (list of URLs or sitemap) and includes a cost warning to keep batches small. It does not explicitly name alternative tools or state when not to use it, but the batch nature and cost guidance make usage conditions clear.

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

gsc_inspect_urlInspect a URL (index status)
Read-onlyIdempotent

Run the URL Inspection API for a page: index status, last crawl time, canonical selection, robots.txt state, mobile usability, rich results and AMP status. Quota: ~2000 calls/day per property.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteUrlYesProperty URL exactly as shown in Search Console, e.g. 'https://example.com/' or 'sc-domain:example.com'. Use gsc_list_sites to discover it.
languageCodeNoBCP-47 language for the response messages, e.g. 'zh-CN'.en-US
inspectionUrlYesFull URL of the page to inspect. Must belong to the property.
gsc_list_sitemapsList sitemaps
Read-onlyIdempotent

List sitemaps submitted for a property, with last submitted/downloaded times, errors, warnings and URL counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteUrlYesProperty URL exactly as shown in Search Console, e.g. 'https://example.com/' or 'sc-domain:example.com'. Use gsc_list_sites to discover it.
gsc_list_sitesList Search Console properties
Read-onlyIdempotent

List all Search Console properties (sites) the authorized account can access, with permission level.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

gsc_opportunitiesFind quick-win keywords (striking distance)A
Read-onlyIdempotent

Find queries with high impressions but average position in a range (default 8-20): pages already ranking on page 1-2 that can be pushed into the top results with title/content/internal-link work. Groups results by page and, when a WordPress site is configured for this domain, maps each page to its post ID so you can edit it directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
countryNoOptional 3-letter country code filter, e.g. 'esp', 'usa'.
endDateNoEnd date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). Search Console data lags ~2-3 days.3daysAgo
siteUrlYesProperty URL exactly as shown in Search Console, e.g. 'https://example.com/' or 'sc-domain:example.com'. Use gsc_list_sites to discover it.
startDateNoStart date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). Search Console data lags ~2-3 days.28daysAgo
searchTypeNoweb
maxPositionNo
minPositionNo
minImpressionsNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds valuable behavioral details: it groups results by page and optionally maps to WordPress post IDs when a WordPress site is configured. This goes beyond the annotations and clarifies the output organization without contradicting them.

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

Conciseness5/5

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

The description is two sentences with no redundancy. It front-loads the core purpose and adds the WordPress mapping detail efficiently. Every phrase earns its place.

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

Completeness4/5

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

For a tool with 9 parameters and no output schema, the description provides the essential context: the target range, the quick-win concept, and the WordPress integration. Parameters like siteUrl and date formats are covered in the schema, and the tool's read-only nature is handled by annotations. The only minor gap is the lack of explanation about the output structure, but since there is no output schema and the use case is clear, it is sufficient.

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

Parameters3/5

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

Schema description coverage is only 44%, so the description should compensate. It does explain the default position range (8-20) and the overall intent, but it does not elaborate on parameters like top, minImpressions, or minPosition/maxPosition beyond their names. The names are self-explanatory, but the description could have clarified relationships (e.g., how minImpressions affects results). It adds some value but does not fully compensate for the coverage gap.

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

Purpose5/5

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

The description states a specific verb ('Find'), resource ('queries with high impressions but average position in a range'), and the qualifying condition ('pages already ranking on page 1-2 that can be pushed into the top results'). This clearly distinguishes it from siblings like gsc_ctr_opportunities (focused on CTR) and keyword_suggest (keyword generation). The purpose is unambiguous.

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

Usage Guidelines4/5

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

The description clearly conveys when to use this tool: when seeking quick wins by improving pages in positions 8-20. It gives concrete context (title/content/internal-link work) but does not explicitly name alternative tools or exclusion criteria. Still, the usage scenario is obvious and distinct enough from the listed siblings.

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

gsc_question_queriesQuestion queries (AI Overview / featured snippet targets)
Read-onlyIdempotent

Find question-style queries (how, what, why, best, is it, cómo, qué, cuánto, dónde...) the site already gets impressions for, grouped by page. Optionally fetches each page to check whether a heading matches the question and whether FAQPage schema exists, so you know where to add FAQ answers. These queries are the ones AI Overviews and answer engines pick up.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
endDateNoEnd date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). Search Console data lags ~2-3 days.3daysAgo
siteUrlYesProperty URL exactly as shown in Search Console, e.g. 'https://example.com/' or 'sc-domain:example.com'. Use gsc_list_sites to discover it.
startDateNoStart date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). Search Console data lags ~2-3 days.90daysAgo
checkPagesNoHow many of the top pages to fetch and check for matching headings / FAQ schema (0 = skip).
minImpressionsNo
gsc_rich_results_reportSearch appearance / rich results report
Read-onlyIdempotent

Show how the site appears in Google results: clicks and impressions per search appearance type (rich results, FAQ, review snippet, video, AMP, translated results, Discover...), and the top pages for each appearance type.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNoEnd date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). Search Console data lags ~2-3 days.3daysAgo
siteUrlYesProperty URL exactly as shown in Search Console, e.g. 'https://example.com/' or 'sc-domain:example.com'. Use gsc_list_sites to discover it.
startDateNoStart date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). Search Console data lags ~2-3 days.90daysAgo
pagesPerTypeNo
gsc_search_analyticsSearch Console performance reportA
Read-onlyIdempotent

Query Google Search performance data (clicks, impressions, CTR, average position) grouped by query, page, country, device, date or searchAppearance. Supports filtering (e.g. only rows where page contains '/blog/') and pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateYesEnd date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). Search Console data lags ~2-3 days.
filtersNoAll filters are AND-ed.
siteUrlYesProperty URL exactly as shown in Search Console, e.g. 'https://example.com/' or 'sc-domain:example.com'. Use gsc_list_sites to discover it.
rowLimitNo
startRowNoPagination offset.
dataStateNo'all' includes fresh (not yet finalized) data of the last days.final
startDateYesStart date: YYYY-MM-DD, 'today', 'yesterday' or 'NdaysAgo' (e.g. '28daysAgo'). Search Console data lags ~2-3 days.
dimensionsNoGroup-by dimensions. Omit for site totals; use ['date'] for a daily trend.
searchTypeNoweb
aggregationTypeNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds behavioral context by explaining that it supports grouping, filtering (with an example), and pagination, which goes beyond the annotations. It does not cover rate limits or auth, but the annotations suffice for safety, and the description adds operational details.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary action and metrics. It includes an example for filtering and mentions pagination, all in a compact format. Every sentence contributes useful information without redundancy.

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

Completeness4/5

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

Given the complexity (10 parameters, no output schema), the description covers the core use case well: it states the metrics returned, the grouping options, filtering, and pagination. It does not explicitly mention data lag (though that is in the parameter descriptions) or the need to use gsc_list_sites for siteUrl, but these are covered by the schema. Overall, it is fairly complete for an agent to understand the tool's purpose and basic usage.

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

Parameters4/5

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

Schema description coverage is 70%, so the schema already documents most parameters. The description adds value by summarizing the grouping dimensions and providing a filtering example (page contains '/blog/'), which helps agents understand how to use the dimensions and filters parameters. It does not repeat schema details but enriches the conceptual model.

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

Purpose5/5

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

The description clearly states the tool queries Google Search performance data with specific metrics (clicks, impressions, CTR, average position) and lists the grouping dimensions (query, page, country, device, date, searchAppearance). It also mentions filtering and pagination, which distinguishes it from sibling tools like gsc_compare_periods or gsc_opportunities by focusing on raw data retrieval.

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

Usage Guidelines4/5

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

The description gives clear context on what the tool does (query performance data) and its capabilities (filtering, pagination), which implies when to use it. However, it does not explicitly state when not to use it or mention alternatives such as gsc_opportunities or gsc_ctr_opportunities, so there is no explicit exclusion guidance.

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

gsc_site_snapshotSite snapshot (one-call overview)A
Read-onlyIdempotent

One call that answers 'how is the site doing': totals for the period and the previous period of equal length (clicks, impressions, CTR, position with deltas), top queries, top pages, device and country split, and the biggest winners/losers by page. Use this first when asked for an overview or a report.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
daysNo
siteUrlYesProperty URL exactly as shown in Search Console, e.g. 'https://example.com/' or 'sc-domain:example.com'. Use gsc_list_sites to discover it.
searchTypeNoweb

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds behavioral context beyond that by specifying the response contains period-over-period comparisons and multiple breakdowns. It doesn't discuss pagination or rate limits, but these are not critical for a snapshot tool with read-only annotations.

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

Conciseness5/5

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

The description is a single, information-dense sentence that front-loads the core purpose and lists all major output categories. It then adds a concise usage directive. No filler or redundancy—every word earns its place.

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

Completeness4/5

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

With no output schema, the description does a good job enumerating the returned data types (totals, deltas, top queries, etc.). However, it omits parameter explanations for non-required fields, which are part of a complete contextual picture for a complex tool. Still, the output description is thorough for a snapshot tool.

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

Parameters2/5

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

Schema description coverage is only 25% (only siteUrl is described). The description does not explain `top`, `days`, or `searchType`. While these are somewhat inferable from their names, the low coverage means the description should have compensated. It doesn't, leaving agents to guess at valid ranges or semantics for non-required parameters.

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

Purpose5/5

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

The description states a clear, specific verb (answers 'how is the site doing') and lists the exact data included: totals with deltas, top queries/pages, device/country splits, winners/losers. It also explicitly positions itself as the first tool for overviews/reports, distinguishing it from the many specialized GSC siblings.

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

Usage Guidelines4/5

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

It gives an explicit directive: 'Use this first when asked for an overview or a report.' This provides strong context for when to choose it over more granular tools like gsc_search_analytics or gsc_compare_periods. It doesn't name alternatives explicitly, but the phrase 'use this first' implies a starting point, which is sufficient.

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

gsc_submit_sitemapSubmit a sitemapA
Idempotent

Submit (or resubmit) a sitemap URL for a property.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteUrlYesProperty URL exactly as shown in Search Console, e.g. 'https://example.com/' or 'sc-domain:example.com'. Use gsc_list_sites to discover it.
feedpathYesAbsolute sitemap URL, e.g. 'https://example.com/sitemap.xml'.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, covering the key behavioral profile. The description adds the 'or resubmit' nuance, which aligns with idempotence, but it does not go further into side effects, permission requirements, or confirmation behavior. No contradiction with annotations.

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

Conciseness5/5

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

Description is a single, front-loaded sentence with no filler: it names the action immediately and the scope. Every word earns its place, and the optional '(or resubmit)' adds meaningful nuance without bloat.

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

Completeness4/5

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

For a two-parameter tool with complete schema coverage, helpful annotations, and no output schema, the description is almost sufficient. The only notable omission is a hint about what happens when the sitemap already exists or how to interpret a result, but '(or resubmit)' and idempotentHint already cover repetition safety. Overall adequate for correct invocation.

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

Parameters3/5

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

Schema coverage is 100% and both parameters already carry full descriptions with examples and hints (e.g., 'Use gsc_list_sites to discover it'). The description adds essentially no parameter-level meaning beyond what the schema already provides, so it meets the baseline for high-coverage schemas.

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

Purpose5/5

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

Description states 'Submit (or resubmit) a sitemap URL for a property' — a specific action (submit/resubmit) on a clear resource (sitemap URL) with explicit scope (for a property). This differentiates it naturally from sibling tools like gsc_list_sitemaps (list) and sitemap_check (check), so an agent can choose it without opening schemas.

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

Usage Guidelines3/5

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

The description implies when to use it (to submit or resubmit a sitemap), which is useful context. However, it provides no explicit alternatives or exclusion guidance, such as 'use gsc_list_sitemaps to see existing sitemaps first' or 'don't use if you only need to verify a sitemap'. This is a gap but not confusing.

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

hreflang_checkhreflang / multilingual consistency check
Read-onlyIdempotent

For a page (or a sitemap sample), read its hreflang alternates and verify: every alternate URL is reachable, points back (reciprocal) to the source, has a self-referencing entry, uses valid language-region codes, has an x-default, and that canonicals do not contradict the alternates. Also compares with the declared hreflang.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsNo
sampleSizeNo
sitemapUrlNoSample pages from a sitemap instead.
indexnow_submitIndexNow: notify Bing/Yandex of changed URLsA
Idempotent

Submit up to 1000 changed URLs to IndexNow (Bing, Yandex, Naver, Seznam; Bing's index feeds ChatGPT search and Copilot). Requires INDEXNOW_KEY and the key file published at https:///.txt (or set INDEXNOW_KEY_LOCATION). The tool verifies the key file before submitting. Google does not support IndexNow.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoOverrides INDEXNOW_KEY.
urlsYes
keyLocationNoOverrides INDEXNOW_KEY_LOCATION.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true. The description adds genuine value beyond annotations by disclosing that 'The tool verifies the key file before submitting', which is an important pre-condition behavior an agent needs to know. No contradiction with annotations; the description's write-implying language matches readOnlyHint=false.

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

Conciseness4/5

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

Three dense sentences, each earning its place: core action with limit, prerequisite with location detail, and the Google exclusion. The main action is front-loaded before prerequisites. Slightly packed but not verbose; appropriate length for the information conveyed.

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

Completeness4/5

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

Covers the essentials for an open-world submission tool: what it does, the 1000-URL cap, supported engines, the key-file prerequisite, verification behavior, and the Google exclusion. Missing return-value/response details (no output schema exists), so an agent doesn't know what success or failure looks like. Given moderate complexity (3 params, no nested objects), this is a minor but real gap.

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

Parameters3/5

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

Schema coverage is 67%, so the schema already documents key ('Overrides INDEXNOW_KEY') and keyLocation ('Overrides INDEXNOW_KEY_LOCATION') with descriptions. The description adds context about what INDEXNOW_KEY is and how the key file must be published, which enriches the key/keyLocation semantics. However, the urls parameter gets no extra explanation beyond the schema's uri format, and the description doesn't fully compensate for the 33% coverage gap.

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

Purpose5/5

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

States a specific verb+resource ('Submit up to 1000 changed URLs to IndexNow') with clear scope, and names the target search engines explicitly (Bing, Yandex, Naver, Seznam). The title 'IndexNow: notify Bing/Yandex of changed URLs' aligns with the description, and no sibling tool performs this exact function (gsc_submit_sitemap is Google-specific), so differentiation is not needed.

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

Usage Guidelines4/5

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

Explicitly states the prerequisite: 'Requires INDEXNOW_KEY and the key file published at https://<host>/<key>.txt (or set INDEXNOW_KEY_LOCATION)'. Gives a clear when-not signal: 'Google does not support IndexNow', implying the agent should use Google's own tooling for Google URLs. Does not name an explicit alternative sibling tool, but the exclusion is informative enough.

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

keyword_suggestKeyword ideas from Google AutocompleteA
Read-onlyIdempotent

Expand a seed keyword using Google Autocomplete suggestions (free, no key): the seed itself, question prefixes (how/what/why/best/cómo/qué...), and optionally a-z suffix expansion. Set language (hl) and country (gl) to match the market, e.g. hl='es', gl='es' or hl='en', gl='gb'. Returns deduplicated suggestions grouped by prefix, useful for long-tail and FAQ ideas.

ParametersJSON Schema
NameRequiredDescriptionDefault
glNoCountry code.us
hlNoInterface language code.en
seedYes
alphabetNoAlso expand with 'seed a', 'seed b', ... (26 extra requests).
questionsNo
extraPrefixesNoCustom prefixes/suffix words to combine with the seed.

TDQS

A4.4/5.0
Behavior4/5

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

The description adds behavioral context beyond the annotations: it notes the tool is free and requires no key, deduplicates suggestions, and groups them by prefix. It also implies multiple requests via a-z expansion. Annotations already declare readOnlyHint and idempotentHint, and the description does not contradict them. It could mention rate limits or external dependency, but the added value is solid.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core action and scope. It packs essential parameter guidance and output characteristics without fluff. Every clause earns its place, making it efficient for an agent to parse quickly.

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

Completeness4/5

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

For a 6-parameter tool with no output schema, the description covers the main purpose, key parameters, and high-level output format. It doesn't detail rate limits or the exact response structure, but the description's summary of deduplicated grouped suggestions is sufficient for an agent to understand expected results. The annotations cover safety and idempotency, so overall it is reasonably complete.

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

Parameters4/5

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

With schema coverage at 67%, the description compensates by explaining the seed expansion modes (question prefixes, a-z suffix) and providing concrete examples for hl and gl parameters. It does not elaborate on extraPrefixes, but the schema describes it. The description adds meaningful semantics beyond the schema's basic type descriptions.

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

Purpose5/5

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

The description clearly states the tool's function: expanding a seed keyword via Google Autocomplete, with specific modes (question prefixes, a-z suffix expansion) and output (deduplicated suggestions grouped by prefix). It is specific about the resource and action, and easily distinguished from sibling tools which are mostly audit, crawl, or analytics tools.

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

Usage Guidelines4/5

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

The description provides clear context for using the tool, including language and country parameter guidance with examples, and mentions its utility for long-tail and FAQ ideas. However, it does not explicitly name alternatives or state when not to use this tool compared to other sibling tools, though its distinct purpose makes this less critical.

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

knowledge_graph_checkEntity presence: Google Knowledge Graph + Wikidata
Read-onlyIdempotent

Check whether a brand/business/place exists as an entity in Wikidata (free, no key) and in Google's Knowledge Graph Search API (needs the 'Knowledge Graph Search API' enabled on the GCP project and a key in GOOGLE_API_KEY or PAGESPEED_API_KEY). AI engines and Google rely on entities to know 'who' a site is; if none exists, the result includes the steps to establish one.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesEntity name, e.g. 'Altai Turismo' or 'Casa Sefardí de Sevilla'.
limitNo
languagesNo
llms_txt_checkllms.txt check
Read-onlyIdempotent

Check /llms.txt and /llms-full.txt: existence, size, structure (H1 title, blockquote summary, H2 sections with markdown links), robots access, and whether the linked URLs respond 200.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteUrlYesSite root, e.g. https://example.com/
checkLinksNo
llms_txt_generateDraft an llms.txt from the sitemapA
Read-onlyIdempotent

Crawl the sitemap (up to maxPages), read each page's title and meta description, and produce a draft llms.txt in the standard format (H1, blockquote summary, H2 sections grouped by first path segment, '- title: description' lines). Review and edit the draft before publishing it at /llms.txt.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteUrlYes
summaryNoBlockquote summary; defaults to the homepage meta description.
maxPagesNo
siteNameNoOverride the H1; defaults to the homepage <title>.
excludePatternsNoSkip URLs containing any of these substrings.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the safety profile is covered. The description adds that it crawls up to maxPages, reads titles and meta descriptions, and produces a draft in a specific format. It also notes the draft must be reviewed before publishing, indicating it does not write directly. This adds meaningful 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.

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the core action ('Crawl the sitemap') and efficiently packs in the output format and a safety instruction. No unnecessary words.

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

Completeness4/5

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

Given the complexity and lack of output schema, the description explains the process, output format, and that the result is a draft to be reviewed before publishing. It does not explicitly state the return type, but 'produce a draft' implies the tool returns the draft. Overall, it covers the essential information for an agent to use it correctly.

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

Parameters3/5

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

Schema descriptions cover 3 of 5 parameters (summary, siteName, excludePatterns). The description clarifies that maxPages limits the crawl ('up to maxPages') and implies siteUrl is the sitemap source, but it does not explicitly define siteUrl or maxPages beyond that. Since coverage is 60%, the description partially compensates but leaves siteUrl ambiguous.

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

Purpose5/5

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

The description states a clear verb (crawl, read, produce) and resource (draft llms.txt) with specific format details. It distinguishes itself from siblings like llms_txt_check (which likely checks existing files) by focusing on generation. The process is unambiguous.

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

Usage Guidelines3/5

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

The description implies the tool is for generating a draft from a sitemap but does not explicitly state when to use it versus alternatives like llms_txt_check or site_crawl. It provides context ('Crawl the sitemap') but lacks explicit exclusions or alternative routing.

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

migration_checkPre-migration URL safety netA
Read-onlyIdempotent

Before pointing a domain at a new (static) site, verify that every URL that matters on the old site still works on the new one. Collects old URLs from Search Console (pages with impressions in the period) and the old sitemap, rewrites each to the new host (e.g. a pages.dev preview), follows redirects, and classifies: OK (200 same path), REDIRECTED (301/302 to a 200 page), REDIRECT_TO_HOME (traffic likely lost), CHAIN (2+ hops), NOT_FOUND (404/410), ERROR. Results are sorted by old-site clicks so the costliest gaps come first.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNo3daysAgo
maxUrlsNo
newHostYesHost of the new site to test against, e.g. 'my-site.pages.dev' or 'new.example.com'.
siteUrlYesSearch Console property, e.g. 'sc-domain:example.com'.
includeOkNoInclude OK rows in the response (otherwise only problems and redirects).
startDateNo180daysAgo
concurrencyNo
oldSitemapUrlNoOld site's sitemap (index supported). Defaults to none: only Search Console pages are used.

TDQS

A4.5/5.0
Behavior5/5

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

The annotations already signal read-only, non-destructive, and idempotent behavior. The description adds rich detail beyond that: it explains the source collection, URL rewriting, redirect following, and the exact classification categories (OK, REDIRECTED, REDIRECT_TO_HOME, CHAIN, NOT_FOUND, ERROR) plus sorting by old-site clicks. This substantially clarifies runtime behavior without contradicting the annotations.

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

Conciseness5/5

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

The description is a single, well-organized paragraph that front-loads the purpose, then explains the process and classification in a logical order. Every sentence contributes to understanding, with no filler or redundancy.

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

Completeness5/5

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

Given there is no output schema, the description adequately explains the return format by enumerating the classification values and the sorting logic. It covers input sources, process, and output expectations. For a read-only, non-destructive tool with these annotations, nothing critical is missing.

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

Parameters3/5

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

Schema coverage is 50% (4 of 8 parameters have descriptions). The tool description indirectly references several parameters (period via 'pages with impressions in the period', old sitemap, new host) but does not explicitly explain the undocumented ones like concurrency or maxUrls. It adds some context beyond the schema but does not fully compensate for the missing parameter descriptions, warranting a middle score.

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

Purpose5/5

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

The description opens with a precise statement of what the tool does: verify that every URL on the old site still works on the new one before migration. It names the specific resources (Search Console, sitemap) and the classification outcomes, making its purpose unambiguous and clearly distinct from siblings like sitemap_check or robots_check.

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

Usage Guidelines4/5

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

It provides a clear usage context: 'Before pointing a domain at a new (static) site.' This tells an agent exactly when to invoke it. However, it does not explicitly mention alternatives or when not to use it, so it stops short of a 5.

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

page_auditOn-page SEO audit of a URL
Read-onlyIdempotent

Fetch a page like a crawler and report: final URL and redirect chain, status, title, meta description, robots (meta + X-Robots-Tag), canonical, lang/hreflang, Open Graph, H1/H2/H3 outline, images missing alt, internal/external/nofollow link counts, word count, JSON-LD schema types, HTML size and fetch time, plus a list of flagged issues. Works for any site, no authorization needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
maxHeadingsNoHow many H1-H3 headings to include in the outline.
maxImagesMissingAltNo
pagespeedPageSpeed Insights / Core Web Vitals
Read-onlyIdempotent

Run Google PageSpeed Insights for a URL. Returns Lighthouse category scores (performance, SEO, accessibility, best practices), lab metrics (LCP, CLS, TBT, FCP, Speed Index), real-user CrUX field data (LCP, CLS, INP) when available, and the top improvement opportunities with estimated savings. Set PAGESPEED_API_KEY for a higher quota. Each run takes 15-60 s; Google caches results for a short while, so if a call times out simply call again. A 'Lighthouse returned error' after retry usually means the page never becomes idle (endless animations/JS) and cannot be audited by PSI.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
strategyNomobile
categoriesNo
topOpportunitiesNo
reviews_snapshotGoogle Business reviews snapshot (Places API)A
Read-onlyIdempotent

Fetch rating, review count and the latest reviews of a Google Business Profile via the Places API (New). Use it as the source for AggregateRating schema and to monitor reputation. Requires GOOGLE_PLACES_API_KEY with 'Places API (New)' enabled (billing must be enabled on the project; Google grants a monthly free allowance).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoBusiness name + city to search, e.g. 'Altai Turismo Sevilla'.
placeIdNoGoogle Place ID if known (skips the search).
languageNoen

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds valuable operational context: it requires GOOGLE_PLACES_API_KEY with 'Places API (New)' enabled, billing must be enabled, and mentions the free monthly allowance. This goes beyond the annotations and helps the agent understand prerequisites.

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

Conciseness5/5

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

Three concise sentences with no wasted words. The action verb is front-loaded, and the operational requirements are stated clearly. Every sentence adds value.

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

Completeness4/5

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

For a simple read-only tool with 3 parameters and no output schema, the description covers purpose, usage, prerequisites, and the data returned. It does not describe the exact response format, but given the annotations and the nature of the tool, this is adequate.

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

Parameters2/5

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

Schema description coverage is 67% (query and placeId have descriptions; language does not). The description adds no parameter-specific meaning, leaving the language parameter undocumented. With moderate coverage and no compensation in the description, it falls short of the baseline 3.

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

Purpose4/5

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

The description clearly states a specific verb ('Fetch') and resource ('Google Business Profile') with concrete data types (rating, review count, latest reviews). It does not explicitly distinguish from sibling tools, but the purpose is unique enough among the listed siblings (no other tool targets reviews).

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

Usage Guidelines4/5

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

The description provides clear use cases: 'source for AggregateRating schema and to monitor reputation.' It does not mention alternatives or when not to use it, but the stated uses give clear context for an agent deciding when to invoke it.

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

robots_checkrobots.txt checkA
Read-onlyIdempotent

Fetch a site's robots.txt, show its groups and sitemap lines, and test whether specific URLs are crawlable for a given user agent (default Googlebot) using Google's longest-match rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesURLs to test. robots.txt is fetched from the first URL's origin.
userAgentNoGooglebot

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, and non-destructive behavior, so the description does not need to repeat those. It adds valuable behavioral detail: the tool fetches robots.txt, shows groups and sitemap lines, and applies Google's longest-match rules for crawlability testing. This goes beyond the annotations and clarifies the operation's logic.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the primary action and includes all essential elements without fluff. Every phrase adds value: fetching, showing groups/sitemaps, testing with a user agent, and the rule engine. It is concise and informative.

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

Completeness4/5

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

For a read-only tool with two simple parameters and no output schema, the description is sufficiently complete. It explains the tool's core outputs (groups, sitemap lines, crawlability results) and the key behavioral rule. It does not detail edge cases or error handling, but those are not critical for a tool of this complexity given the annotations.

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

Parameters3/5

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

Schema description coverage is 50%; the schema already explains that robots.txt is fetched from the first URL's origin and that userAgent has a default. The description reinforces the purpose of URLs (test crawlability) and mentions the default Googlebot, but adds little beyond what the schema states. The mention of 'Google's longest-match rules' adds context for the userAgent, but it is not directly tied to a specific parameter's semantics.

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

Purpose5/5

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

The description states a specific verb (fetch, show, test) and a clear resource (robots.txt) with a well-defined scope: fetching, displaying groups/sitemap lines, and testing crawlability. It clearly distinguishes from siblings like sitemap_check and ai_crawler_access by focusing on robots.txt rules and Googlebot behavior.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: to inspect robots.txt and test URL crawlability for a specific user agent. It mentions the default Googlebot and Google's longest-match rules, which implies typical usage. However, it does not explicitly state when not to use it or mention alternatives, so it stops short of an explicit when/when-not.

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

schema_generateDraft JSON-LD from a pageA
Read-onlyIdempotent

Generate draft JSON-LD from an existing page: 'faq' extracts question-style headings and the paragraph(s) that follow them into FAQPage; 'article' builds Article/BlogPosting from title, meta description, dates, author and og:image; 'breadcrumb' from the URL path; 'all' returns every applicable block. Review the text (answers are trimmed to ~600 chars) then publish with wp_set_schema or by editing the site code.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
kindNoall
maxQuestionsNo
organizationNameNoPublisher name for Article; defaults to og:site_name.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: it produces a draft (not a final publication), trims answers to ~600 characters, and suggests a follow-up publishing step. It does not contradict any annotation and enriches the behavioral picture with concrete constraints.

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

Conciseness5/5

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

The description is three sentences with zero fluff. It front-loads the primary action, then breaks down each mode with a semicolon-separated list, and ends with the practical workflow note. Every sentence earns its place; the structure is scannable and efficient.

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

Completeness4/5

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

Given the tool has 4 parameters, one enum, and no output schema, the description covers the essential behaviors: the output kinds, the trimming behavior, and the follow-up publishing step. It does not explicitly describe the exact JSON-LD structure returned, but that is implied by the purpose and the annotations cover read-only/idempotent behavior. The only minor gap is the lack of explicit mention of 'maxQuestions' behavior, but that is a schema-level detail. Overall it is complete enough for an agent to call correctly.

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

Parameters3/5

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

Schema description coverage is only 25% (only organizationName has a schema description). The description compensates by explaining the 'kind' enum values in detail (faq, article, breadcrumb, all), but it does not clarify 'maxQuestions' beyond its schema metadata (default 10, max 30) nor the 'url' parameter, which is self-explanatory. It adds partial meaning for one parameter but leaves 'maxQuestions' under-documented, so it only partially compensates for the low schema coverage.

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

Purpose5/5

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

The description states a specific verb (generate), a specific resource (draft JSON-LD from an existing page), and enumerates the four output kinds (faq, article, breadcrumb, all). It clearly distinguishes itself from sibling tools like schema_validate (which validates) and structured_data_audit (which audits) by framing itself as a generation tool. No ambiguity remains about what the tool produces.

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

Usage Guidelines4/5

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

The description gives clear context for when to use it: to produce draft structured data before publishing, and it names the follow-up action (publish with wp_set_schema). However, it does not explicitly state when not to use it or compare itself to alternatives like schema_validate, leaving some inference required. It implies usage through workflow rather than explicit exclusions.

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

schema_validateValidate JSON-LD
Read-onlyIdempotent

Validate one or more JSON-LD objects before publishing: required/recommended properties per type (same rules as structured_data_audit), FAQ/Breadcrumb structure, ISO dates, @context presence. Returns the normalized, compact JSON ready to inject.

ParametersJSON Schema
NameRequiredDescriptionDefault
jsonldYesJSON-LD as an object, array of objects, or JSON string.
site_crawlCrawl the site and audit every pageA
Read-onlyIdempotent

Breadth-first crawl from a start URL (same host only, respects robots.txt for Googlebot), auditing each HTML page like page_audit. Returns a site-level summary: status code counts, broken internal links with their referrers, redirect chains, duplicate titles and descriptions, pages missing title/description/H1, noindex pages, thin pages, images without alt, orphan pages (in sitemap but never linked), click depth from the start page and inbound-link counts per page. Use maxPages to bound the run; a 200-page crawl takes 1-3 minutes.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxPagesNo
startUrlYes
pathPrefixNoOnly crawl URLs whose path starts with this, e.g. '/blog/'.
concurrencyNo
includePagesNoInclude the per-page audit rows in the response (large).
includeSitemapNoAlso read the sitemap to detect orphan pages and seed the queue.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds operational details beyond annotations: respects robots.txt for Googlebot, same-host constraint, breadth-first strategy, and a time estimate. It does not contradict annotations and provides useful context on how the crawl behaves.

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

Conciseness4/5

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

The description is moderately long but each sentence adds value. It front-loads the core purpose, then lists the detailed outputs and ends with a practical usage hint. It avoids fluff and is well-structured, though slightly verbose in the output enumeration.

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

Completeness4/5

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

For a crawl tool with no output schema, the description covers the key aspects: what it returns (list of metrics), how to bound it, performance expectations, and constraints (same host, robots.txt). It does not mention authentication requirements or exact response format, but these are minor given the comprehensive summary provided.

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

Parameters3/5

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

Schema description coverage is 50%, so the description should compensate. It does explain maxPages (bounding) and startUrl (implicitly), but concurrency is left unexplained. The description adds a performance note tied to maxPages but does not fully elaborate on all parameters. This is adequate but not exhaustive.

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

Purpose5/5

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

The description clearly states a specific verb ('crawl') and resource ('from a start URL'), and clarifies it audits each HTML page like page_audit. It lists the detailed site-level summary outputs, making its purpose unambiguous and distinguishing it from single-page tools like page_audit or specific checks like robots_check.

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

Usage Guidelines4/5

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

The description implies when to use it (site-wide audit vs. single page via 'like page_audit') and gives practical guidance on bounding with maxPages and performance expectations. However, it does not explicitly mention alternatives or when not to use it, such as when a sitemap check or robots check would be more appropriate.

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

sitemap_checkSitemap fetch and URL health checkA
Read-onlyIdempotent

Fetch a sitemap (sitemap index supported, .gz supported), list its URLs, and check the HTTP status of a sample (or all) of them to find 404s, redirects and server errors. Pass a site root to auto-discover the sitemap from robots.txt or /sitemap.xml.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesSitemap URL, or the site root (e.g. https://example.com/) to auto-discover.
checkAllNoCheck every URL (capped at 500).
listUrlsNoInclude the full URL list in the response.
sampleSizeNoHow many URLs to status-check (0 = list only). Sampled evenly across the sitemap.
concurrencyNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds valuable behavioral details such as sitemap index support, .gz handling, sampling vs. all URLs, a 500 cap for checkAll, and even sampling logic, which go beyond the annotations.

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

Conciseness5/5

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

The description is three concise sentences with the primary action front-loaded. It covers the core functionality, format support, and auto-discovery without any redundant or vague phrasing.

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

Completeness4/5

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

Given the tool's moderate complexity and the lack of an output schema, the description explains the main actions and expected results (identifying 404s, redirects, errors) but does not detail the response structure or error handling. While sufficient for an agent to call correctly, a bit more detail on output would make it fully complete.

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

Parameters3/5

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

Schema description coverage is 80%, so the schema already documents most parameters (url, checkAll, listUrls, sampleSize). The description adds minimal parameter-specific meaning—it mentions auto-discovery for url and sampling for sampleSize, but these are already in the schema. Concurrency lacks a description in the schema and the description does not compensate for that gap.

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

Purpose5/5

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

The description explicitly states the tool fetches a sitemap, lists URLs, and checks HTTP status to identify 404s, redirects, and server errors. It also mentions auto-discovery from robots.txt or /sitemap.xml, making the purpose specific and distinct from sibling tools like site_crawl or robots_check.

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

Usage Guidelines4/5

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

The description provides clear context on what the tool does and how to use it, including the option to pass a site root for auto-discovery. It does not explicitly name alternative tools or exclusion conditions, but the usage is straightforward and unlikely to be confused with siblings.

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

social_preview_checkOpen Graph / Twitter card preview checkA
Read-onlyIdempotent

Validate how a page previews when shared (social networks, messaging apps, AI chat link cards): og:title/description/image/url/type, twitter:card, image reachability, dimensions (recommended 1200x630), file size and content type, plus fallbacks used when tags are missing.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond annotations: it explicitly checks remote image reachability, file size, content type, and fallback behavior, indicating the tool performs network fetches and assesses resource metadata. This goes beyond the bare annotation data without contradicting it.

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

Conciseness4/5

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

The description is a single sentence that front-loads the core action ('Validate how a page previews when shared') and then efficiently lists the specific checks. It is dense but not bloated; every listed item adds concrete information. It could be broken into two sentences for readability, but it earns a high score for no wasted words.

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

Completeness3/5

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

Given the tool's moderate complexity and lack of an output schema, the description is almost complete: it covers what is validated and the main checks. However, it does not describe the result format (e.g., pass/fail, list of issues, or a structured report), which an agent would need to know for downstream handling. With no output schema to fill this gap, the description leaves a meaningful ambiguity.

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

Parameters4/5

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

The schema has a single 'url' parameter with no description (0% coverage), so the description must compensate. It effectively encodes the meaning of the parameter by stating the tool validates 'a page' that is to be shared, clearly implying the URL parameter is the target page. For a one-parameter tool, this is sufficient to make the parameter's role unambiguous.

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

Purpose5/5

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

The description states a specific verb ('Validate') and resource ('how a page previews when shared') and enumerates concrete checks (OG tags, Twitter card, image reachability, dimensions, etc.). It is clearly distinct from sibling tools like page_audit or structured_data_audit because it focuses exclusively on social/messaging/link-card preview behavior, so an agent can select it unambiguously.

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

Usage Guidelines3/5

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

The description makes the use case implicit: 'when shared' and the list of social contexts imply the tool is for preview validation. However, it does not explicitly state when to use this tool versus alternatives (e.g., page_audit, structured_data_audit), nor does it mention exclusions or prerequisites. The usage context is clear enough but not explicitly contrasted with sibling tools.

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

structured_data_auditStructured data (JSON-LD) auditA
Read-onlyIdempotent

Extract JSON-LD from one or more pages, validate required/recommended properties per schema type (Organization, LocalBusiness, TravelAgency, TouristTrip, Product/Offer, Event, Article/BlogPosting, FAQPage, BreadcrumbList, WebSite, Person, Review...), flag invalid JSON and bad dates, and check entity consistency across pages (organization name, telephone, address, sameAs must match everywhere). Pass explicit urls or a sitemap to sample.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsNo
sampleSizeNo
sitemapUrlNoSample pages from this sitemap instead of explicit urls.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavior beyond that: it validates required/recommended properties, flags invalid JSON and dates, and checks entity consistency across pages. It also clarifies the sampling approach. No contradictions found.

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

Conciseness4/5

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

The description is a single paragraph that front-loads the main action (extract JSON-LD and validate) and then details specific checks and input methods. It is information-dense without being redundant, though it lists many schema types which could be trimmed without losing core meaning.

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

Completeness4/5

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

The description covers the main functionality, input methods, and validation scope. It does not describe the output format (no output schema exists) or mention limits like maxItems, but those are in the input schema. Given the tool's complexity and the annotations covering safety, the description is reasonably complete for an agent to understand what the tool does and how to call it.

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

Parameters3/5

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

Schema coverage is only 33% (only sitemapUrl has a description). The description explains that urls and sitemapUrl are alternative input methods ('Pass explicit urls or a sitemap'), which adds meaning to those parameters. However, sampleSize is not explicitly described, though 'sample' implies its purpose. The description partially compensates for the low coverage but could be more explicit about sampleSize and the relationship between urls and sitemapUrl.

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

Purpose5/5

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

The description clearly states the tool extracts JSON-LD from pages, validates properties per schema type, flags invalid JSON/dates, and checks entity consistency. It lists specific schema types and mentions input methods. This distinguishes it from siblings like schema_validate (likely single-schema validation) and eeat_audit.

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

Usage Guidelines3/5

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

It explains how to invoke the tool ('Pass explicit urls or a sitemap to sample') but does not explicitly state when to choose this over alternative tools like schema_validate or site_crawl. The intended context is implied by the description but not spelled out with exclusions or comparisons.

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.

  1. 51 tool updatesv0.3.0
    • First observedai_citation_check
    • First observedai_crawler_access
    • First observedbrand_mentions
    • First observedcompare_pages
    • First observedcontent_refresh_candidates
    • First observedcross_site_links
    • First observedcrux_history
    • First observedeeat_audit
    • First observedga_compare_periods
    • First observedga_get_metadata
    • First observedga_landing_page_seo
    • First observedga_list_properties
    • First observedga_run_realtime_report
    • First observedga_run_report
    • First observedgeo_page_score
    • First observedgithub_commit_files
    • First observedgithub_get_file
    • First observedgithub_list_commits
    • First observedgithub_list_dir
    • First observedgithub_search_code
    • First observedgoogle_auth_status
    • First observedgsc_cannibalization
    • First observedgsc_compare_periods
    • First observedgsc_ctr_opportunities
    • First observedgsc_index_coverage
    • First observedgsc_inspect_url
    • First observedgsc_list_sitemaps
    • First observedgsc_list_sites
    • First observedgsc_opportunities
    • First observedgsc_question_queries
    • First observedgsc_rich_results_report
    • First observedgsc_search_analytics
    • First observedgsc_site_snapshot
    • First observedgsc_submit_sitemap
    • First observedhreflang_check
    • First observedindexnow_submit
    • First observedkeyword_suggest
    • First observedknowledge_graph_check
    • First observedllms_txt_check
    • First observedllms_txt_generate
    • First observedmigration_check
    • First observedpage_audit
    • First observedpagespeed
    • First observedreviews_snapshot
    • First observedrobots_check
    • First observedschema_generate
    • First observedschema_validate
    • First observedsite_crawl
    • First observedsitemap_check
    • First observedsocial_preview_check
    • First observedstructured_data_audit

TDQS

Score is being calculated.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to manage Google Tag Manager, Google Search Console, and Google Analytics (GA4) through unified access to tags, search performance data, URL inspection, sitemaps, and analytics reporting.
    21
    ISC
  • A
    license
    A
    quality
    A
    maintenance
    Integrates SEO analysis and Google Search Console data directly into Claude Code and Cursor. Performs real-time site audits, detects technical SEO issues, validates meta tags, generates structured data, and provides AI-powered recommendations for both production sites and local development servers.
    19
    7
    3
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides AI agents with professional-grade SEO capabilities including on-page analysis, technical audits, PageSpeed insights, and Ahrefs data integration.
    13
    18
    5
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Provides AI agents with hands-on control of Google SEO and analytics tools including Search Console, GA4, Tag Manager, Indexing API, and PageSpeed Insights, with self-configuring OAuth2.
    33
    18
    MIT

Latest Blog Posts

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/Akxan/google-seo-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server