Skip to main content
Glama
Jambozx

OnlineCyberTools MCP (280+ filterable tools)

by Jambozx

seo_sitemap_generator

Read-onlyIdempotent

Build XML sitemaps from user-supplied URLs. Validates entries, handles hreflang alternates, and returns serialized XML with warnings for invalid data.

Instructions

Sitemap Generator (Build XML Sitemap From URL List). Serialize a user-supplied list of URLs into a sitemaps.org 0.9-compliant XML document (operation "generate"), or build a that references already-split sitemap files (operation "generateIndex"). Does NOT crawl, fetch, or discover URLs — it formats exactly the entries you pass, XML- escaping each value, optionally emitting the xhtml namespace when hreflang alternates are present. Use seo_robots_txt_generator to control crawler access and point at the finished sitemap, or seo_hreflang_generator when you only need standalone alternate-language tags. Runs locally: read-only, non-destructive, contacts no external service, idempotent, and rate-limited (30 req/min anon, 60 authenticated). Returns the serialized XML, the entry count, the UTF-8 byte size, and warnings for invalid dates, bad changefreq/priority values, or breaches of the 50,000-URL / 50 MB protocol limits.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
operationYes"generate" builds a <urlset> from "urls"; "generateIndex" builds a <sitemapindex> from "sitemaps". Defaults to generate.generate
urlsNoURL entries for operation "generate" (required, min 1 valid entry). Entries missing loc are skipped with a warning.
sitemapsNoChild-sitemap entries for operation "generateIndex" (required for that operation, min 1 valid entry).
prettyPrintNoWhen true, indents and newline-separates the XML; false emits a single minified line.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
successNoTrue when generation succeeded.
operationNoEcho of the operation performed (generate or generateIndex).
resultNoGeneration payload for the chosen operation.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed17 schema fields changedv0.5.1
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / operation
      Added value: +{
      +  "default": "generate",
      +  "description": "\"generate\" builds a <urlset> from \"urls\"; \"generateIndex\" builds a <sitemapindex> from \"sitemaps\". Defaults to generate.",
      +  "enum": [
      +    "generate",
      +    "generateIndex"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / prettyPrint / default
      Added value: +true
    • addedInput schema / properties / prettyPrint / description
      Added value: +"When true, indents and newline-separates the XML; false emits a single minified line."
    • addedInput schema / properties / sitemaps
      Added value: +{
      +  "description": "Child-sitemap entries for operation \"generateIndex\" (required for that operation, min 1 valid entry).",
      +  "items": {
      +    "properties": {
      +      "lastmod": {
      +        "description": "Optional ISO 8601 last-modified date; invalid values warn.",
      +        "type": "string"
      +      },
      +      "loc": {
      +        "description": "Absolute URL of a child sitemap file.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "loc"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / urls / description
      Added value: +"URL entries for operation \"generate\" (required, min 1 valid entry). Entries missing loc are skipped with a warning."
    • addedInput schema / properties / urls / items / properties / alternates
      Added value: +{
      +  "description": "Optional hreflang alternates; triggers the xhtml namespace on <urlset>.",
      +  "items": {
      +    "properties": {
      +      "href": {
      +        "description": "Absolute URL of the alternate-language page.",
      +        "type": "string"
      +      },
      +      "hreflang": {
      +        "description": "BCP 47 language/region code, e.g. en-US.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "hreflang",
      +      "href"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / urls / items / properties / changefreq / description
      Added value: +"Optional change-frequency hint; other values warn and are dropped."
    • addedInput schema / properties / urls / items / properties / changefreq / enum
      Added value: +[
      +  "always",
      +  "hourly",
      +  "daily",
      +  "weekly",
      +  "monthly",
      +  "yearly",
      +  "never"
      +]
    • addedInput schema / properties / urls / items / properties / lastmod / description
      Added value: +"Optional ISO 8601 date or datetime (e.g. 2024-05-27 or 2024-05-27T13:45:00Z); invalid values warn."
    • addedInput schema / properties / urls / items / properties / loc / description
      Added value: +"Absolute URL. Max 2048 chars (over-length warns, not rejected)."
    • addedInput schema / properties / urls / items / properties / priority / description
      Added value: +"Optional crawl priority 0.0-1.0, serialized to one decimal; out-of-range warns and is dropped."
    • addedInput schema / properties / urls / items / properties / priority / maximum
      Added value: +1
    • addedInput schema / properties / urls / items / properties / priority / minimum
      Added value: +0
    • changedInput schema / properties / urls / items / required
      Previous value: -[
      -  "loc",
      -  "lastmod",
      -  "changefreq",
      -  "priority"
      -]New value: +[
      +  "loc"
      +]
    • changedInput schema / required
      Previous value: -[
      -  "urls",
      -  "prettyPrint"
      -]New value: +[
      +  "operation"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "operation": {
      +      "description": "Echo of the operation performed (generate or generateIndex).",
      +      "type": "string"
      +    },
      +    "result": {
      +      "description": "Generation payload for the chosen operation.",
      +      "properties": {
      +        "byteSize": {
      +          "description": "UTF-8 byte size of the XML as a crawler sees it on disk.",
      +          "type": "integer"
      +        },
      +        "sitemapCount": {
      +          "description": "Number of <sitemap> entries emitted (generateIndex operation).",
      +          "type": "integer"
      +        },
      +        "urlCount": {
      +          "description": "Number of <url> entries emitted (generate operation).",
      +          "type": "integer"
      +        },
      +        "warnings": {
      +          "description": "Per-entry validation notes and protocol-limit breaches; empty when clean.",
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "xml": {
      +          "description": "The serialized sitemap XML document.",
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "success": {
      +      "description": "True when generation succeeded.",
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observedv0.1.0

TDQS

A5/5.0
Behavior5/5

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

Annotations already provide readOnlyHint, destructiveHint, and idempotentHint. The description adds further behavioral details: runs locally, read-only, non-destructive, no external service calls, idempotent, rate-limited (30/60 req/min), and describes return values (serialized XML, entry count, byte size, warnings). 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 yet thorough, using bullet-like structure within paragraphs. Each sentence adds meaningful information without redundancy. It is front-loaded with the core purpose and then covers behavioral details, usage guidelines, and return values efficiently.

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 parameter complexity (4 params, nested objects) and the presence of an output schema, the description still fully explains inputs, operations, edge cases (warnings for invalid values, limits), and the nature of the tool (non-destructive, idempotent). It is complete without relying solely on schema or annotations.

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

Parameters5/5

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

Schema coverage is 100%, and the description adds valuable context beyond the schema. It explains the 'operation' enum values, that 'urls' entries must have a 'loc' field, that 'alternates' triggers the xhtml namespace, and describes warnings for invalid dates, changefreq, priority, and protocol limits.

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 'Sitemap Generator (Build XML Sitemap From URL List)' and explains two operations: generate and generateIndex. It explicitly says what the tool does not do (crawl, fetch, discover URLs), distinguishing it from related tools like seo_robots_txt_generator and seo_hreflang_generator.

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 provides explicit guidance on when to use this tool vs alternatives: 'Use seo_robots_txt_generator to control crawler access and point at the finished sitemap, or seo_hreflang_generator when you only need standalone alternate-language tags.' It also states that the tool does not crawl or discover URLs, only formats provided entries.

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

Deploy Server

Other Tools