Discover documentation URLs from a bounded XML sitemap
Read one public XML sitemap or sitemap index as structured URLs and source-reported dates. Supports gzip, substring filtering and pagination. Maximum 512 KiB expanded input and 1000 entries. Does not crawl pages or follow child sitemaps. Invalid XML and execution errors are not charged; a valid empty match is charged. Use to find which pages of a docs site to read before calling /extract.
Inputs
| Name | Type | Description |
|---|---|---|
url (required) | string | Absolute public HTTP(S) XML sitemap URL; child sitemaps are not fetched automatically |
contains | string | Optional case-insensitive URL substring, at most 200 characters |
maxUrls | integer | Reported matching locations examined in one page (1-100, default 25); invalid/nonpublic locations may reduce returned entries |
offset | integer | Offset into distinct reported matching locations (0-1000, default 0); use nextOffset to continue |
Request
Over HTTP, with a card key from /credits:
curl -H "Authorization: Bearer adt_…" "https://agent-data-tools.revmesh2074.workers.dev/sitemap?url=https%3A%2F%2Fagent-data-tools.revmesh2074.workers.dev%2Fexamples%2Fsitemap%2Fsource.xml"
Or one of your 25 free calls, no key:
curl "https://agent-data-tools.revmesh2074.workers.dev/sitemap?url=https%3A%2F%2Fagent-data-tools.revmesh2074.workers.dev%2Fexamples%2Fsitemap%2Fsource.xml&trial=1"
Without a key, the same URL answers 402 Payment Required with x402 and MPP terms, so an agent with a wallet pays per call in USDC (Base, Polygon, Arbitrum, Monad, World Chain or Tempo) and retries.
Example result
{
"url": "https://agent-data-tools.revmesh2074.workers.dev/examples/sitemap/source.xml",
"finalUrl": "https://agent-data-tools.revmesh2074.workers.dev/examples/sitemap/source.xml",
"kind": "urlset",
"entries": [
{
"url": "https://agent-data-tools.revmesh2074.workers.dev/examples/extract/sources/technical-guide.html",
"lastModified": "2026-10-15"
},
{
"url": "https://agent-data-tools.revmesh2074.workers.dev/examples/extract/sources/short-article.html",
"lastModified": "2026-10-15"
}
],
"reportedEntries": 3,
"uniqueReportedLocations": 3,
"missingOrInvalidLocations": 0,
"duplicateReportedLocations": 0,
"rejectedLocationsInPage": 0,
"matchingReportedLocations": 3,
"contains": "",
"offset": 0,
"nextOffset": 2,
"hasMore": true,
"warnings": [
"counts_describe_reported_locations_before_public_url_validation",
"locations_and_dates_are_source_reported_not_probed"
],
"text": "https://agent-data-tools.revmesh2074.workers.dev/examples/extract/sources/technical-guide.html\nhttps://agent-data-tools.revmesh2074.workers.dev/examples/extract/sources/short-article.html",
"format": "text",
"hashFormat": "text",
"contentHash": "sha256:8055b8b5ced205885a181b4fa7145008ac8d5dc3fb3286007c4cf679f886b750",
"sourceHash": "sha256:c24148c4774690472856c116012988bb52e992c6a3bbba156947be1dac6eba03",
"fetchedAt": "2026-10-15T21:48:20.943Z"
}
From an AI agent (MCP)
Add the MCP server to Claude, Cursor or any MCP client. This tool is sitemap, and the first 25 successful calls are free:
https://agent-data-tools.revmesh2074.workers.dev/mcp
Details and limits
XML only: 512 KiB compressed and expanded, 1000 entries, 8000 XML elements, depth 16, locations up to 2048 characters. DTD declarations are rejected. contains is a case-insensitive substring of source-reported URLs, not semantic search. Pagination counts distinct reported loc values before public-URL validation of the selected page. Returned URLs are not probed; dates are not verified. Index entries are child sitemaps, not pages. DNS-resolution limitations of the public-fetch guard remain.