Skip to main content
Glama

MCP-SEO

Open-source SEO analysis toolkit for AI agents.

MCP-SEO gives any LLM agent — or human — a complete suite of SEO auditing tools, accessible both as a CLI and as a Model Context Protocol (MCP) server. Point it at a URL and get structured, Markdown-formatted reports on meta tags, headings, links, images, performance, mobile-friendliness, structured data, and more.

Features

  • 21 CLI commands covering on-page SEO, technical SEO, performance, accessibility, and content analysis

  • 18 MCP tools exposing the same capabilities to any MCP-compatible client (Claude Desktop, Cursor, OpenCode, ...)

  • Headless browser rendering via Playwright/Chromium for JavaScript-heavy pages

  • Lighthouse-style scoring (0-100) with per-category breakdowns

  • Multi-page site crawler with duplicate detection and robots.txt respect

  • Structured output — every analyzer returns Pydantic models (JSON) and Markdown reports

  • Configurable — all timeouts and thresholds overridable via MCP_SEO_* env vars

  • pip-installablepip install mcp-seo and you're ready to go

Related MCP server: foglift-mcp

Installation

pip install mcp-seo

# Or with pipx for isolated CLI usage
pipx install mcp-seo

# Or directly from GitHub
pip install git+https://github.com/g-battaglia/mcp-seo.git

After installing, set up the headless browser (one-time):

mcp-seo setup

Quick Start

# Lighthouse-style audit with scoring
mcp-seo lighthouse https://example.com

# Full comprehensive report (all analyzers combined)
mcp-seo report https://example.com

# Individual analyzers
mcp-seo meta https://example.com           # Title, description, OG, Twitter, canonical
mcp-seo headings https://example.com       # Heading hierarchy (h1-h6)
mcp-seo links https://example.com          # Internal/external, nofollow, anchors
mcp-seo images https://example.com         # Alt text, lazy loading, dimensions, format
mcp-seo content https://example.com        # Word count, readability, keywords, n-grams
mcp-seo headers https://example.com        # Caching, security, compression, redirects
mcp-seo sitemap https://example.com        # XML sitemap discovery and validation
mcp-seo robots https://example.com         # robots.txt rules and directives
mcp-seo structured-data https://example.com # JSON-LD, Microdata, RDFa
mcp-seo performance https://example.com    # Core Web Vitals (TTFB, FCP, LCP)
mcp-seo mobile https://example.com         # Viewport, tap targets, font sizes
mcp-seo url-structure https://example.com   # URL length, depth, tracking params
mcp-seo accessibility https://example.com   # ARIA, landmarks, skip-nav, score

# Site crawler
mcp-seo crawl-site https://example.com     # Crawl site, find duplicates

# Page fetching
mcp-seo crawl https://example.com          # Rendered HTML (JS executed)
mcp-seo fetch https://example.com          # Raw HTTP response (JSON)

# Utilities
mcp-seo screenshot https://example.com
mcp-seo og-image -t "Title" -s "Subtitle" -o output.png

MCP Server

MCP-SEO includes a built-in Model Context Protocol server that exposes all SEO tools to any MCP-compatible AI client.

mcp-seo mcp

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-seo": {
      "command": "mcp-seo",
      "args": ["mcp"]
    }
  }
}

OpenCode

Add to your opencode.json:

{
  "mcpServers": {
    "mcp-seo": {
      "command": "mcp-seo",
      "args": ["mcp"]
    }
  }
}

If you installed from source with uv instead of pip, use "command": "uv" with "args": ["run", "--directory", "/path/to/mcp-seo", "mcp-seo", "mcp"].

Available MCP Tools

Tool

Description

crawl

Render page with headless Chromium, return full HTML

fetch_page

Fetch raw HTTP response as JSON

analyze_meta_tags

Title, description, OG, Twitter, canonical, viewport

analyze_headings

Heading hierarchy (h1-h6), single H1, skip checks

analyze_links

Internal/external links, nofollow, anchor text

analyze_images

Alt text, lazy loading, dimensions, modern formats

analyze_content

Word count, readability, keywords, n-grams

analyze_headers

Caching, security, compression, redirect chain

analyze_sitemap

XML sitemap discovery and validation

analyze_robots

robots.txt rules, crawl-delay, sitemap directives

analyze_structured_data

JSON-LD, Microdata, RDFa extraction

analyze_performance

TTFB, FCP, LCP, DOM nodes, requests, resource sizes

analyze_mobile

Viewport, font sizes, tap targets, horizontal scroll

analyze_url_structure

URL length, depth, separators, tracking params

analyze_accessibility

ARIA landmarks, skip-nav, forms, images, score

lighthouse_audit

Lighthouse-style scoring (0-100) per category

full_seo_report

Comprehensive report combining all analyses

crawl_site

Multi-page crawler with cross-page analysis

For LLM Agents

MCP-SEO is designed to be used autonomously by AI agents. All tools produce structured Markdown output that is easy to parse, quote, and reason about.

See AGENTS.md for recommended workflows: quick audits, comprehensive audits, competitive analysis, and technical audits.

Claude Code Skill

MCP-SEO is available as a Claude Code skill:

npx @anthropic-ai/claude-code skills add g-battaglia/mcp-seo

This installs the mcp-seo skill, giving Claude Code direct access to all 18 SEO analysis tools with recommended audit workflows. The skill auto-triggers on SEO-related prompts and guides the agent to use the right tools for each analysis.

Development

git clone https://github.com/g-battaglia/mcp-seo.git
cd mcp-seo
uv sync --group dev
uv run mcp-seo setup
uv run mcp-seo --help

Tech Stack

Component

Library

CLI

click

MCP server

FastMCP (mcp SDK)

Browser

Playwright (headless Chromium)

HTTP client

httpx

HTML parsing

BeautifulSoup4 + lxml

Data models

Pydantic v2

License

GNU Affero General Public License v3.0

Available Tools

18 tools
analyze_accessibilityA

Analyze page accessibility: ARIA landmarks (main, nav, banner), skip navigation links, ARIA roles/labels, image alt text audit, form input labeling, table headers, link accessible text, and focus management (tabindex). Returns a score out of 100.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It lists the checks performed and mentions the return of a score out of 100. However, it does not disclose that the tool will make a network request to the URL, potential side effects, or prerequisites like URL accessibility. This is a gap in behavioral transparency for a tool that fetches a page.

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 purpose, then lists specific checks, and ends with the output score. Every word adds value, with no redundancy or 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 enumerates a comprehensive list of accessibility checks and states the score output, which is quite complete for a page-analysis tool with a single parameter and an output schema. It does not mention prerequisites or limitations (e.g., page must be publicly accessible, handling of SPAs), but given the tool's simplicity, the description adequately covers the key aspects.

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 schema has one parameter ('url') with no descriptions (schema coverage 0%). The description implies the url is the page to analyze but adds no additional meaning about URL format or constraints. Since the parameter name is self-explanatory and the tool's purpose is clear, the meaning is adequate, but the description does not compensate for the lack of schema-level parameter documentation.

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 ('Analyze page accessibility') and lists concrete aspects (ARIA landmarks, skip navigation, alt text, form labels, table headers, link text, focus management). This clearly distinguishes it from sibling tools like analyze_headings or analyze_links, which target specific content areas.

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 indicates the tool is for accessibility auditing of a page, providing clear context for when to use it. However, it does not explicitly state when not to use it or compare against alternatives like lighthouse_audit, which may also cover accessibility. Thus it lacks explicit exclusions or alternative guidance, but the context is clear.

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

analyze_contentA

Analyze page content: word count, Flesch-Kincaid readability score, reading grade level, keyword density, sentence analysis, text-to-HTML ratio, top keywords, bigrams, trigrams, and keyword stuffing detection.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden of explaining behavior. It transparently covers what the tool analyzes and returns, but does not disclose operational details such as network fetching behavior, potential latency, error handling, or auth requirements. This is acceptable for a read-only analysis tool but leaves some gaps.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that starts with the action and resource, then lists specific outputs without filler. Every phrase contributes value, making it appropriately concise and structurally effective.

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

Completeness4/5

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

Given the tool has only one input and a rich set of outputs, the description lists the major analysis categories in enough detail for an agent to select the tool. It does not mention input constraints or explicit use cases, but the output list provides substantial context. The presence of an output schema also helps, though the description itself is nearly 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?

The schema has only one parameter ('url') with no description coverage in the input schema. The description does not mention the url parameter at all, failing to compensate for the 0% schema_description_coverage. While the parameter is self-evident, the description adds zero meaning beyond the bare schema field.

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 the specific verb 'analyze' with the resource 'page content' and enumerates a detailed list of outputs (word count, readability, keyword density, etc.). This clearly distinguishes it from sibling tools like analyze_meta_tags or analyze_headings, which target different aspects of a page.

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 that this tool is for content-focused analysis by listing content metrics, but it does not explicitly state when to use it over alternatives, nor does it mention any exclusions. For example, it does not say 'use this for readability and keywords; use analyze_meta_tags for metadata.' Thus usage guidance is only implied.

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

analyze_headersA

Inspect HTTP response headers: caching (Cache-Control, ETag), security (HSTS with max-age validation, CSP, X-Frame-Options), SSL certificate validation, cookie security (Secure/HttpOnly/SameSite), compression, server info, and redirect chain analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It provides meaningful behavioral details: HSTS max-age validation, SSL certificate validation, and redirect chain analysis indicate active network inspection. However, it does not disclose error handling, timeouts, or how it handles redirects, though the output schema may cover the return format.

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

Conciseness4/5

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

The description is a single long sentence but front-loads the primary action ('Inspect HTTP response headers') and then lists specifics. While dense, each clause is informative and no fluff is present, though it could be broken into shorter sentences for readability.

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 major aspects of HTTP header analysis, including caching, security, SSL, cookies, compression, server info, and redirects. It is complete enough for a focused tool with an output schema, though it could explicitly state whether redirects are followed (implied by 'redirect chain analysis') and mention potential limitations.

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 only parameter is 'url' with no description in the schema. The tool name and description make its meaning obvious, but the description does not add explicit semantics such as requiring an absolute URL or supported protocols. With 0% schema coverage, the description provides only minimal compensation through context.

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: 'Inspect HTTP response headers' and enumerates specific categories (caching, security, SSL, cookies, compression, server info, redirects). This distinguishes it from sibling tools like analyze_meta_tags or analyze_content, which focus on other aspects of a page.

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 header analysis but does not explicitly state when to use this tool over alternatives like fetch_page or lighthouse_audit. It lacks explicit when/when-not guidance or references to sibling tools.

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

analyze_headingsA

Extract and validate the heading hierarchy (h1-h6). Checks for single H1, skipped levels, empty headings, duplicate headings, and long headings (>70 chars).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It does frame the operation as read-only ('Extract and validate') and lists the specific checks performed, which is helpful. However, it does not disclose whether the tool fetches the URL itself, any authentication or rate-limit requirements, or behavior on invalid or unreachable pages.

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 and about 30 words, front-loaded with the core purpose and followed by a compact list of validation rules. Every sentence earns its place, with no filler or repetition.

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

Completeness4/5

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

For a single-URL analysis tool with an output schema present, the description covers the main purpose and all major validation checks. It omits edge-case behavior and fetch details, but those are not critical for an agent to select and invoke the tool correctly.

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

Parameters3/5

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

The only parameter, url, is self-explanatory from the schema and tool name, but the description does not mention it or add any constraints (e.g., absolute vs relative). Since schema description coverage is 0%, the description fails to compensate explicitly, though the simplicity of the parameter limits the practical impact.

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 with a specific verb ('Extract and validate') and names the exact resource ('heading hierarchy (h1-h6)'). It enumerates concrete checks (single H1, skipped levels, empty headings, duplicates, long headings), which distinguishes it from sibling tools like analyze_headers or analyze_content.

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 about the intended use case: validating heading hierarchy. However, it does not explicitly mention when to prefer this tool over alternatives or provide exclusions, so it stops short of the full 'when/when-not' guidance.

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

analyze_imagesA

Audit images: alt text presence, lazy loading, explicit dimensions (width/height for CLS), modern format usage (WebP/AVIF), srcset and picture element analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the audit checks performed (alt text, lazy loading, dimensions, formats, srcset/picture), giving a transparent view of behavior. The word 'Audit' implies a read-only analysis, though it doesn't explicitly confirm non-mutating behavior.

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

Conciseness5/5

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

The description is a single sentence, efficiently listing all audit areas without redundancy. The structure front-loads the primary action ('Audit images') and uses a colon to introduce the detailed scope, maximizing information density.

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 presence of an output schema, the description covers the key aspects: it lists what is audited and implies the input (a URL). It doesn't explicitly state return format, but the output schema handles that, making the description sufficiently 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?

The schema has only one parameter (url) with 0% description coverage. The description does not explicitly explain what 'url' refers to (e.g., the page URL to audit) or whether it accepts image URLs directly. An agent might infer the meaning from the tool name, but the description fails to compensate for the missing schema detail.

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 with the specific verb 'Audit' and identifies the resource (images) and the exact audit dimensions (alt text, lazy loading, dimensions for CLS, modern formats, srcset/picture). This distinguishes it from sibling tools like analyze_links or analyze_meta_tags.

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, making it obvious when to use it (for image audits). It doesn't explicitly mention when not to use alternatives, but the specificity of the audit areas gives sufficient guidance for an agent to select this tool over siblings.

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

analyze_meta_tagsA

Analyze meta tags: title (with pixel-width estimation), meta description, canonical (self-referencing check), robots, viewport, charset, lang, Open Graph tags, Twitter Card tags, hreflang tags, and favicon.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only lists what is analyzed and does not mention side effects, prerequisites (e.g., network access), or whether the operation is read-only. It adds no context about error handling or limitations.

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 covered elements in a clear, scannable format. There is no redundant wording or filler, and every element listed adds value.

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

Completeness4/5

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

The description comprehensively enumerates the meta tag categories analyzed, which is sufficient for an agent to understand the tool's scope. An output schema exists, so return value details are covered. However, it lacks mention of behavioral aspects like error conditions or the need for a live page, which would be useful for complete guidance.

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 schema has one parameter (url) with 0% description coverage, so the description must compensate. It fails to explicitly state that the URL is the page whose meta tags are analyzed, though this is implied by the tool name and parameter name. The description provides minimal added meaning beyond the schema's type and title.

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

Purpose5/5

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

The description starts with a specific verb ('Analyze') and resource ('meta tags'), and enumerates all the distinct elements covered (title, description, canonical, robots, viewport, etc.). This clearly differentiates it from sibling tools like analyze_headings or analyze_links, which target other aspects of a page.

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 establishes clear context by listing the full scope of meta tag analysis, making it obvious when to use this tool. However, it does not explicitly state when not to use it or mention alternatives, so it lacks exclusionary guidance.

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

analyze_mobileA

Analyze mobile-friendliness: viewport meta, responsive design detection, font sizes (<12px check), tap target sizes (48x48dp check), horizontal scroll, pinch-to-zoom disabled check, intrusive interstitial detection, and content width validation.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It transparently lists the exact checks performed, giving a clear picture of the tool's behavior without revealing side effects (none expected for an analysis tool). It does not mention return format, but an output schema is present.

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 action and then lists specific checks without filler. Every clause adds useful information, making it appropriately concise.

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

Completeness5/5

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

For a single-URL analysis tool with an output schema, the description is complete: it details all analysis dimensions, and the output schema covers return values. No significant gaps affect tool selection or 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?

The single 'url' parameter is self-explanatory from the tool's purpose, and the description implies the checks apply to the provided URL. However, schema description coverage is 0%, and the description does not provide explicit param details such as URL format, restrictions, or examples.

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 the specific verb 'Analyze' with a clear object 'mobile-friendliness' and enumerates concrete checks (viewport meta, tap targets, horizontal scroll, etc.), fully distinguishing it from sibling analysis tools. The URL target is evident from the input schema.

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

Usage Guidelines3/5

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

The description implies this tool should be used when mobile-friendliness checks are needed, but it does not explicitly state when to use it over alternatives like analyze_accessibility or lighthouse_audit. No exclusions or alternative tool references are provided.

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

analyze_performanceC

Measure all Core Web Vitals: TTFB, FCP, LCP, CLS (Cumulative Layout Shift), TBT (Total Blocking Time), DOM nodes, total requests, transfer size, render-blocking resources, and resource breakdown by type.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden for behavioral transparency. It does not disclose how the measurement is performed, whether the page is loaded, any side effects, or safety profile. The description focuses entirely on output metrics without 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.

Conciseness4/5

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

The description is a single sentence listing many metrics, but it is front-loaded with the main purpose and each metric is relevant. It is somewhat long but appropriate for the comprehensive nature of the tool.

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

Completeness4/5

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

The tool has one parameter and an output schema, so the description need not detail return values. It lists all the metrics comprehensively, making it fairly complete for an analysis tool. However, it lacks prerequisites or usage context, preventing a perfect score.

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

Parameters2/5

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

The single 'url' parameter has no schema description, and the description does not explicitly mention the URL parameter or its expected format. Schema coverage is 0%, so the description should compensate, but it only implies the tool operates on a URL without clarifying format or requirements.

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 measures Core Web Vitals and lists specific metrics like TTFB, FCP, LCP, CLS, TBT. It has a specific verb 'Measure' and resource 'Core Web Vitals', giving it a clear purpose. However, it does not explicitly distinguish itself from sibling lighthouse_audit, which may also cover similar metrics, so it falls short of a 5.

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

Usage 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 simply lists what it measures. Sibling tools like lighthouse_audit may cover similar ground, and there is no mention of when to prefer this tool or any exclusions.

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

analyze_robotsA

Fetch and analyze robots.txt: parses user-agent rules (Disallow/Allow), crawl-delay, sitemap directives. Detects blocking of important bots (Googlebot, Bingbot), CSS/JS resource blocking, contradictory rules, and file size limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses significant behavioral details: parsing user-agent rules, detecting blocking, contradictory rules, and file size limits. It does not mention failure modes like missing robots.txt or network errors, but 'Fetch' implies a network request, and the coverage of analysis features is commendable.

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 purpose ('Fetch and analyze robots.txt') and enumerates the analysis features without superfluous text. Every clause adds value, and it is efficiently structured.

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

Completeness3/5

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

The tool is simple with one parameter and an output schema, so return values need no explanation. However, the lack of parameter semantics and usage guidance creates gaps. The description covers analysis features well but leaves the 'url' parameter ambiguous, making it not fully complete for agent use.

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

Parameters1/5

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

The single required parameter 'url' has no description in the schema or the tool description. It is not clarified whether 'url' should point to the robots.txt file directly or to a website root. This ambiguity is critical and unaddressed, earning the lowest 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 clearly states 'Fetch and analyze robots.txt' with a specific verb and resource. It details the parsing functions (user-agent rules, crawl-delay, sitemap) and distinguishes itself from siblings like analyze_sitemap, which targets sitemap files rather than robots.txt.

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

Usage Guidelines3/5

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

Usage is implied rather than explicit. The description suggests when to use it (to inspect robots.txt), but it offers no guidance on when not to use it or how it compares to alternatives like crawl or analyze_sitemap. There is no explicit 'use this when' or 'instead of' context.

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

analyze_sitemapA

Discover and parse XML sitemaps: checks /sitemap.xml, /sitemap_index.xml, and robots.txt Sitemap directives. Validates URL count limits (50K), file size (50MB), lastmod format (W3C), and freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description provides meaningful behavioral detail: it checks specific locations, validates URL count limits (50K), file size (50MB), lastmod format (W3C), and freshness. It does not disclose read-only status or error behavior, but the search/validation behavior is well specified.

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 zero fluff. The first sentence states the action and targets, the second lists validation criteria. Every part 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?

The description covers the discovery scope and validation checks, and the presence of an output schema means return values need not be explained. Missing details are limited to parameter semantics and error handling, which is acceptable for a simple single-param tool.

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

Parameters3/5

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

The single URL parameter has no schema description, and the description adds partial meaning by implying the URL is the site root for sitemap discovery. However, it does not clarify whether direct sitemap URLs are accepted or what URL formats are valid, leaving ambiguity.

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

Purpose5/5

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

Description opens with the specific verb+object 'Discover and parse XML sitemaps' and lists concrete checks (/sitemap.xml, /sitemap_index.xml, robots.txt directives). This clearly differentiates it from sibling tools like analyze_robots or crawl.

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 used when sitemap analysis is needed, but it does not explicitly state when to use this tool over alternatives, nor does it mention exclusions. Usage context is present but not fully articulated.

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

analyze_structured_dataA

Extract and validate structured data: JSON-LD, Microdata, and RDFa. Validates Schema.org required properties, checks Rich Result eligibility, detects @context and @graph handling, and recommends WebSite/Organization schemas.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of disclosing behavior. It details specific actions: validating Schema.org required properties, checking Rich Result eligibility, detecting @context/@graph handling, and recommending schemas. This goes beyond vague updating or analyzing and gives concrete insight into the tool's operation, though it does not mention limitations or side effects.

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

Conciseness5/5

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

The description is extremely concise, consisting of only two sentences. It leads with the core purpose and then enumerates specific validation features without any filler. Every clause contributes meaningful detail, making it highly scannable for an agent.

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

Completeness4/5

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

Given the tool's complexity and the presence of an output schema, the description covers the main functionality well: extraction, validation, rich result checks, and schema recommendations. It may not mention edge cases like malformed data handling or JavaScript-rendered content, but the output schema can address return value expectations. Overall, the description is sufficiently complete for an agent to infer appropriate use.

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

Parameters2/5

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

The input schema has no description for the single 'url' parameter, and the tool description does not mention it either. Since schema description coverage is 0%, the description was expected to compensate by indicating what kind of URL is expected (e.g., fully qualified, publicly accessible). The parameter is named clearly, but no additional meaning is provided beyond the name itself.

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 identifies the tool's function with a specific verb ('Extract and validate') and resource ('structured data: JSON-LD, Microdata, and RDFa'). It further details specific validation actions, making it distinct from sibling analysis tools like analyze_meta_tags or analyze_headings.

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 strong context for when to use this tool: whenever structured data needs to be extracted or validated. It doesn't explicitly mention when not to use it or name alternatives, but the sibling tools cover other aspects of SEO analysis, so the usage context is clear by implied comparison.

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

analyze_url_structureA

Analyze URL structure for SEO best practices: length, depth, separator usage (hyphens vs underscores), uppercase detection, tracking parameter detection, session ID detection, file extensions, and path keyword extraction.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

No annotations are present, so the description carries the full burden. It lists the exact analysis dimensions (length, depth, hyphens vs underscores, uppercase, tracking/session IDs, file extensions, keywords), providing good insight into behavior. It does not mention network calls or input validation, but for a read-only analysis tool with an output schema, the disclosed scope is adequate.

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

Conciseness4/5

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

A single sentence that is front-loaded with the purpose ('Analyze URL structure for SEO best practices') and followed by a list of specific checks. There is no filler, but the sentence is somewhat list-heavy, which slightly reduces readability.

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?

Since the tool has an output schema, return values do not need explanation. The description covers eight distinct analysis areas, which is fairly complete for a focused SEO tool. It lacks explicit usage boundaries and input format details, but overall it gives enough context for an agent to select and 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?

There is a single `url` parameter, but the description does not explicitly describe its format or constraints (0% schema description coverage). The tool name and description imply the URL is the subject, and the low complexity reduces ambiguity, but the description adds no meaning beyond the schema's name/type.

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 ('Analyze') and resource ('URL structure'), and enumerates concrete aspects (length, depth, separator usage, tracking parameters, etc.). This clearly distinguishes it from sibling tools like analyze_meta_tags or analyze_headings.

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 use for SEO best practices involving URL structure, but it does not explicitly state when to prefer this tool over siblings or mention any exclusions. The context is clear but without explicit alternatives or when-not-to-use guidance.

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

crawlA

Render a page with headless Chromium and return the full rendered HTML. Use this when the page is a SPA or uses client-side rendering.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the transparency burden. It discloses the key behavior (headless Chromium rendering, returning full rendered HTML), which goes beyond the tool name. It doesn't mention potential limitations like timeouts or failures, but for a simple single-parameter tool this is adequate.

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 function, and each sentence earns its place. There is no fluff or repetition of schema information.

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

Completeness4/5

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

For a simple tool with one parameter and an output schema, the description covers the essential 'what' and 'when' without needing to explain return values (handled by output schema). It's complete enough for an agent to select and invoke correctly, though it could mention edge cases.

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

Parameters2/5

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

With schema description coverage at 0% and one parameter (url), the description fails to add any meaning about the parameter. It doesn't explain the URL format, required protocols, or behavior for invalid URLs, leaving the agent to infer from the tool's name and function.

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 renders a page with headless Chromium and returns full rendered HTML, using a specific verb and resource. It also distinguishes from siblings by noting the SPA/client-side rendering use case, which differentiates it from fetch_page and crawl_site.

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 'when to use' condition ('when the page is a SPA or uses client-side rendering'), implying the alternative (non-SPA) case. However, it does not explicitly name alternative tools or give when-not-to-use guidance, so it stops short of full explicitness.

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

crawl_siteB

Crawl a website discovering pages via internal links. Analyzes each page for meta tags, headings, and common SEO issues. Returns a site-wide summary with cross-page duplicate detection.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
max_pagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose all behavioral traits. It does explain that it discovers pages via internal links, analyzes each page, and returns a summary with duplicate detection. However, it omits important behaviors like the max_pages limit, robots.txt handling, and error handling, which are relevant for a crawling tool.

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

Conciseness5/5

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

The description is three focused sentences: the first states the core action (crawl via internal links), the second lists the analysis aspects, and the third describes the output. Each sentence earns its place, and the description is front-loaded with the primary verb and object.

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 adequately covers the main purpose and key features, but for a tool with a max_pages parameter and potential site-wide implications, it does not address crawl limits, robots.txt compliance, or handling of large sites. An output schema exists, so return-value details are unnecessary, yet operational context remains incomplete.

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

Parameters1/5

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

Schema description coverage is 0%, and the description provides no explanation of the 'url' or 'max_pages' parameters. It does not compensate for the schema's sparse documentation, adding no meaning beyond the parameter names and default value already present 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 uses a specific verb 'Crawl a website' and clearly defines the scope (site-wide via internal links) and analysis focus (meta tags, headings, SEO issues). It distinguishes itself from sibling tools like fetch_page (single page) and analyze_meta_tags (per-page analysis) by emphasizing the cross-page, site-wide summary.

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 multi-page SEO analysis via 'site-wide summary' and 'cross-page duplicate detection,' but it does not explicitly state when to use this tool over siblings like 'crawl' or 'full_seo_report.' No alternatives or exclusions are mentioned, leaving some ambiguity.

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

fetch_pageA

Fetch the raw HTTP response without JS rendering. Returns JSON with status code, headers, body, redirect chain, and timing.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description must cover behavioral details. It does so by specifying that the operation does not render JS and returns a JSON payload with status, headers, body, redirect chain, and timing. This goes beyond a simple fetch statement but does not disclose error handling or rate limits.

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

Conciseness5/5

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

The description is two short, front-loaded sentences with no filler. The main action and return format are immediately stated, making it highly concise and readable.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, no annotations, presence of an output schema), the description covers the core behavior, return payload, and the non-rendering aspect. It lacks explicit usage guidance but otherwise provides enough context for effective 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?

There is only one parameter (url) with 0% schema description coverage, and the description does not add explicit details about URL format or constraints. However, the parameter is self-evident from the tool's purpose and the schema name, making it minimally sufficient.

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

Purpose5/5

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

The description clearly states the tool fetches the raw HTTP response without JS rendering, using a specific verb and resource. It distinguishes itself from sibling analysis tools by explicitly noting the no-rendering 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 implies the primary use case—obtaining the raw HTTP response without JS rendering—but does not explicitly mention alternatives or exclusion criteria. Since the context is clear and the tool is simple, no explicit exclusions are needed.

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

full_seo_reportA

Generate a comprehensive SEO report combining ALL analyses: HTTP headers, SSL validation, meta tags, headings, links, images, structured data, content quality, sitemap, robots.txt, performance (Core Web Vitals), mobile-friendliness, and lighthouse scoring. This is the most complete analysis available.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

Because no annotations are provided, the description carries the full burden of behavioral disclosure. It only lists components and claims completeness, but does not disclose potential side effects, such as making network requests, performance impact, or whether the analysis is limited to a single page. This is a significant gap for a tool that likely aggregates many sub-analyses.

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

Conciseness4/5

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

The description is a single, front-loaded sentence that efficiently lists the included analyses. The final sentence adds a differentiating claim. While the list is lengthy, it is necessary to convey the tool's scope and there is no unnecessary filler.

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

Completeness3/5

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

The description covers the main components and indicates this is an aggregate tool, which is helpful given the large sibling set. However, it does not explain operational expectations like runtime, whether it analyzes a single URL or a site, or any limitations. The output schema provides return value structure, so the description is partially complete but leaves behavioral gaps.

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

Parameters2/5

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

The schema has 0% description coverage with a single 'url' property. The description does not add any guidance about URL format, protocols, or edge cases. The parameter name is self-explanatory, but the description misses the opportunity to compensate for the lack of schema detail.

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 with a specific verb ('Generate') and a defined resource ('comprehensive SEO report'). It distinguishes itself from sibling tools by enumerating all the analyses it combines and explicitly claiming to be 'the most complete analysis available.'

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 the tool by saying it combines ALL analyses and is the most complete, suggesting it is the go-to for a full report while individual sibling tools handle narrower focuses. However, it doesn't explicitly state when NOT to use it or name alternative tools for specific analyses.

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

lighthouse_auditB

Run a comprehensive SEO audit with weighted continuous scoring (0-100): Meta Tags, Heading Structure, Content Quality, Images, Structured Data, Links. Returns overall score with individual check scores and severity-prioritized issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It does disclose behavior by mentioning 'weighted continuous scoring (0-100)' and the return of 'overall score with individual check scores and severity-prioritized issues.' However, it lacks context on side effects, permission requirements, or limitations (e.g., whether it truly runs Lighthouse or only analyzes HTML). This is moderate transparency.

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

Conciseness5/5

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

The description is concise, well-structured, and front-loaded. The first sentence states the verb and resource, the second provides output details. Every word adds value, with no redundancy or filler.

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

Completeness3/5

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

Although the tool is complex and has an output schema, the description covers the main functionality and return format, so the output schema reduces the need to explain return values. However, gaps remain: no usage guidance, no parameter clarification, and no differentiation from full_seo_report. The description is adequate but not complete for optimal tool selection and invocation.

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

Parameters2/5

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

The schema has 0% description coverage for the single required parameter 'url'. The description does not explain what format the URL should be (e.g., must include protocol, can be any domain) or how the URL is used in the audit. Since schema coverage is low and the description does not compensate, the semantics are under-specified.

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 'run a comprehensive SEO audit' with specific components (Meta Tags, Heading Structure, etc.) and describes the scoring. However, it does not distinguish itself from the sibling tool 'full_seo_report', which likely serves a similar comprehensive purpose, so it lacks sibling 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 implies the tool is for a comprehensive audit covering multiple SEO areas, but it does not explicitly state when to use this tool versus the individual analyze_* tools or full_seo_report. No exclusions or alternative recommendations are provided, leaving usage context merely implied.

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

TDQS

A3.7/5.0
Disambiguation4/5

Each analyze_* tool targets a distinct SEO aspect (meta, headings, links, images, etc.), so most purposes are clear. However, full_seo_report, lighthouse_audit, and crawl_site all offer comprehensive analyses, which could cause some confusion about which to use for a site-wide overview.

Naming Consistency4/5

The majority of tools follow an analyze_<resource> pattern (analyze_meta_tags, analyze_links, etc.), providing strong consistency. A few exceptions like crawl, fetch_page, lighthouse_audit, and full_seo_report deviate from this pattern, but they are still readable and recognizable.

Tool Count4/5

With 18 tools, the server is slightly above the typical 3-15 well-scoped range, but the breadth is justified by the comprehensive SEO analysis domain. Each tool covers a specific checklist item, and none feel redundant or extraneous.

Completeness5/5

The toolset covers the full spectrum of on-page SEO analysis, including meta tags, content, structured data, performance, mobile usability, sitemaps, robots.txt, and site-wide crawling. It also includes comprehensive audits and a full report, leaving no obvious gaps for common SEO workflows.

Maintenance

ActivityInactive
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
    B
    quality
    B
    maintenance
    MCP server that enables AI agents to perform comprehensive web audits using Google Lighthouse with 13+ tools for performance, accessibility, SEO, and security analysis.
    11
    1,186
    67
    MIT
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    MCP server for website SEO + GEO analysis. Scan any URL to get scores across 5 categories (SEO, GEO, Performance, Security, Accessibility) with actionable fix recommendations. Enables AI coding assistants to audit websites and implement fixes autonomously.
  • A
    license
    A
    quality
    D
    maintenance
    SEO toolkit MCP server for analyzing meta tags, robots.txt, sitemaps, keyword density, readability, and heading structure from any AI assistant that supports MCP.
    6
    11
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    An MCP server that lets an AI agent audit a page for SEO and GEO — on-page tags, structured data, robots.txt, sitemaps, hreflang, and whether ChatGPT, Claude, Perplexity and Gemini can actually crawl and cite you. No API keys required.
    17
    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/g-battaglia/mcp-seo'

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