Skip to content

Web Validator by DigestSEO

by AKzar1el · remote · local (npm) · no sign-in to list tools · v1.3.42 · published by GitHub user AKzar1el

Audit public webpages and supplied markup for HTML, CSS, SEO, JSON-LD, and link issues.

Changes · 5

8 tools: 5 change things and 3 only read.

Scanned Oct 21, 2026

3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http web-validator https://web-validator-mcp.digestseo.com/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn1 info
  • The server marks "check_broken_links" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "check_broken_links" says "link": a word for a change.

    What this check looks for
  • The server marks "generate_validation_report" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "generate_validation_report" says "generate": a word for a change.

    What this check looks for
  • The input schema at properties.url.description mentions "credentials".

    Matched text

    inputSchema.properties.url.description: "...lic HTTP(S) webpage URL; private pages, credentials, and custom ports are rejected."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

8 tools

Changes things 5Claude Code: ask
  • audit_public_siteUse this for a bounded, sitemap-first audit of a public website the user owns or is authorized to inspect.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Use this for a bounded, sitemap-first audit of a public website the user owns or is authorized to inspect. It fetches at most 8 same-origin HTML pages per call, respects robots.txt, and returns compact page summaries plus deduplicated findings. It does not recursively follow HTML links, authenticate, execute JavaScript, fetch assets, or run site-wide link checks. Use page_offset to continue when more sitemap pages remain.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
    • destructiveHint: false
    • idempotentHint: true
  • audit_public_webpageUse this when the user provides one live public webpage URL.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Info

      The input schema at properties.url.description mentions "credentials".

      Matched text

      inputSchema.properties.url.description: "...lic HTTP(S) webpage URL; private pages, credentials, and custom ports are rejected."

      What this check looks for
    Description, as the server wrote it
    Use this when the user provides one live public webpage URL. Fetches one bounded static HTML response, then runs HTML validation, SEO/accessibility-signal, and JSON-LD syntax checks. It checks links only when requested and does not crawl, execute JavaScript, authenticate, or fetch linked stylesheets. Use only URLs the user owns or is authorized to inspect.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
    • destructiveHint: false
    • idempotentHint: true
  • audit_seo_metadataUse this for a focused SEO/accessibility-signal check of supplied HTML.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Use this for a focused SEO/accessibility-signal check of supplied HTML. It does not fetch a live webpage; use audit_public_webpage for a URL.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
    • idempotentHint: true
  • generate_validation_reportUse this when HTML markup is already supplied.1 finding

    Why it is in this group

    • The name "generate_validation_report" says "generate": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "generate_validation_report" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "generate_validation_report" says "generate": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Use this when HTML markup is already supplied. Combines Nu HTML validation with local CSS, SEO, accessibility-signal, and JSON-LD syntax checks. It does not fetch a webpage from base_url; use audit_public_webpage for a live URL.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
    • destructiveHint: false
    • idempotentHint: true
Only reads 3Claude Code: allow
  • validate_cssUse this when raw CSS source is supplied.No findings

    Why it is in this group

    • The name "validate_css" says "validate": a word for reading.
    Description, as the server wrote it
    Use this when raw CSS source is supplied. Parses it inside the Worker and returns syntax messages without contacting an external service.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
    • idempotentHint: true
  • validate_htmlUse this when raw HTML markup is supplied.No findings

    Why it is in this group

    • The name "validate_html" says "validate": a word for reading.
    Description, as the server wrote it
    Use this when raw HTML markup is supplied. Sends that markup to the Nu HTML Checker hosted at validator.nu and returns validation messages. For a live URL, use audit_public_webpage.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
    • destructiveHint: false
    • idempotentHint: true
  • validate_schema_markupUse this for a focused JSON-LD syntax check of supplied HTML.No findings

    Why it is in this group

    • The name "validate_schema_markup" says "validate": a word for reading.
    Description, as the server wrote it
    Use this for a focused JSON-LD syntax check of supplied HTML. It parses JSON only and does not validate Schema.org vocabulary semantics.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
    • idempotentHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.3.42. Values in angle brackets are yours to fill in.

claude mcp add --transport http web-validator https://web-validator-mcp.digestseo.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__web-validator__validate_html",
      "mcp__web-validator__validate_css",
      "mcp__web-validator__validate_schema_markup"
    ],
    "ask": [
      "mcp__web-validator__audit_seo_metadata",
      "mcp__web-validator__check_broken_links",
      "mcp__web-validator__generate_validation_report",
      "mcp__web-validator__audit_public_webpage",
      "mcp__web-validator__audit_public_site"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as web-validator. Review it before you use it.