Skip to main content
Glama
AutomateLab-tech

automatelab-ai-seo

Official

Check XML sitemap health

check_sitemap
Read-onlyIdempotent

Validate a domain's XML sitemap for presence, accessibility, URL count, lastmod freshness, and support for sitemap-index, image, and video extensions. Use for site-wide indexing audits.

Instructions

Validate a domain's XML sitemap: presence, accessibility, URL count, lastmod freshness, sitemap-index handling, and image/video sitemap extensions.

Read-only. Issues N+1 HTTP GETs: one for robots.txt + sitemap, then up to max_urls_to_check HEADs against sampled URLs.

Deterministic, rule-based; no LLM.

When to use: site-wide indexing audits. Pair with check_robots for a full pre-crawl picture. For per-page checks, use audit_page or check_technical instead.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
domainYesHostname or origin to inspect. Examples: `example.com`, `https://example.com`. The tool tries `/sitemap.xml` then the sitemap URL declared in robots.txt; follows sitemap index files one level deep. Read-only HTTP GETs against the domain only.
max_urls_to_checkNoCap on how many URLs from the sitemap to sample for lastmod, image/video extension, and structural checks. Default 100. Increase up to 500 for large sites where you want a more representative sample; each extra URL is one HTTP HEAD.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
domainYesThe hostname the sitemap was checked for.
statusYesOutcome of the sitemap lookup.
findingsYes
fetched_atYesUTC ISO-8601 timestamp of the check.
total_urlsYesTotal URLs declared across the sitemap (and indexed children).
sitemap_urlYesResolved sitemap URL (null when status != found).
urls_with_lastmodYesCount of URLs that carry a lastmod attribute.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed1 schema field changedv1.0.0
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "domain": {
      +      "description": "The hostname the sitemap was checked for.",
      +      "type": "string"
      +    },
      +    "fetched_at": {
      +      "description": "UTC ISO-8601 timestamp of the check.",
      +      "type": "string"
      +    },
      +    "findings": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "category": {
      +            "description": "Finding category - which AI-SEO dimension it relates to.",
      +            "enum": [
      +              "schema",
      +              "robots",
      +              "technical",
      +              "freshness",
      +              "structure",
      +              "authority",
      +              "presence",
      +              "sitemap",
      +              "llms_txt",
      +              "citation",
      +              "evidence",
      +              "trust",
      +              "entity",
      +              "content"
      +            ],
      +            "type": "string"
      +          },
      +          "estimated_impact": {
      +            "description": "Estimated impact on AI citation probability when resolved.",
      +            "enum": [
      +              "high",
      +              "medium",
      +              "low"
      +            ],
      +            "type": "string"
      +          },
      +          "failure_signal": {
      +            "description": "Falsifiability: the observable signal that would prove the fix did NOT work.",
      +            "type": "string"
      +          },
      +          "fix": {
      +            "description": "Concrete, copy-pasteable fix.",
      +            "type": "string"
      +          },
      +          "leading_indicator": {
      +            "description": "Falsifiability: the leading indicator to monitor to confirm the fix is landing.",
      +            "type": "string"
      +          },
      +          "message": {
      +            "description": "Human-readable description of the issue.",
      +            "type": "string"
      +          },
      +          "severity": {
      +            "description": "Triage priority: critical blocks AI citation, warning hurts probability, info is nice-to-have.",
      +            "enum": [
      +              "critical",
      +              "warning",
      +              "info"
      +            ],
      +            "type": "string"
      +          },
      +          "where": {
      +            "description": "Location of the issue (CSS selector, JSON-LD path, robots.txt line, or 'page-level').",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "severity",
      +          "category",
      +          "where",
      +          "message",
      +          "fix"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "sitemap_url": {
      +      "description": "Resolved sitemap URL (null when status != found).",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "description": "Outcome of the sitemap lookup.",
      +      "enum": [
      +        "found",
      +        "missing",
      +        "error"
      +      ],
      +      "type": "string"
      +    },
      +    "total_urls": {
      +      "description": "Total URLs declared across the sitemap (and indexed children).",
      +      "type": "number"
      +    },
      +    "urls_with_lastmod": {
      +      "description": "Count of URLs that carry a lastmod attribute.",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "domain",
      +    "fetched_at",
      +    "status",
      +    "sitemap_url",
      +    "total_urls",
      +    "urls_with_lastmod",
      +    "findings"
      +  ],
      +  "type": "object"
      +}
  2. Changed2 schema fields changedv0.1.2
    • addedInput schema / properties / domain / description
      Added value: +"Hostname or origin to inspect. Examples: `example.com`, `https://example.com`. The tool tries `/sitemap.xml` then the sitemap URL declared in robots.txt; follows sitemap index files one level deep. Read-only HTTP GETs against the domain only."
    • addedInput schema / properties / max_urls_to_check / description
      Added value: +"Cap on how many URLs from the sitemap to sample for lastmod, image/video extension, and structural checks. Default 100. Increase up to 500 for large sites where you want a more representative sample; each extra URL is one HTTP HEAD."
  3. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already set readOnlyHint, idempotentHint, openWorldHint, and destructiveHint. The description adds concrete behavioral details: 'Read-only. Issues N+1 HTTP GETs: one for robots.txt + sitemap, then up to max_urls_to_check HEADs against sampled URLs. Deterministic, rule-based; no LLM.' This goes beyond annotations and provides transparency about network requests and determinism.

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 (three short paragraphs) and well-structured: purpose first, then behavioral traits, then usage guidelines. Every sentence adds value; no redundancy or fluff.

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 the tool's complexity (multiple sitemap checks), full parameters, annotations, and the presence of an output schema, the description is complete. It covers what the tool does, how it works, and when to use it, with no missing information.

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 100% (both parameters have descriptions). The description adds extra context: domain parameter notes tool tries /sitemap.xml and follows robots.txt and sitemap indexes; max_urls_to_check explains it caps HTTP HEADs. This adds meaning beyond the schema, justifying a 4.

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 validates a domain's XML sitemap, listing specific checks (presence, accessibility, URL count, lastmod freshness, sitemap-index handling, image/video extensions). It uses a specific verb ('Validate') and resource ('domain's XML sitemap'), and distinguishes from siblings like audit_sitemap and check_robots.

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?

The description explicitly tells when to use the tool: 'site-wide indexing audits.' It also provides pairings ('Pair with check_robots for a full pre-crawl picture') and alternatives for per-page checks ('use audit_page or check_technical instead').

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

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/AutomateLab-tech/ai-seo-mcp'

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