Skip to main content
Glama

Map a site's URLs

web_access_sitemap
Destructive

Manage an asynchronous crawl of authorized public pages on one website. Starting from one URL, the crawler follows same-domain links breadth-first and can also seed from the site's /sitemap.xml. Requests must comply with destination policy, robots directives, rate limits, and access controls.

Use this tool to discover pages for site audits, authorized retrieval worklists, or coverage checks before fetching individual pages. Not for: reading one page's content (use web_access_fetch) or open-ended web queries (use web_access_search).

This single tool drives the whole job lifecycle through action:

1. submit — quote a crawl (nothing is crawled or billed yet). Requires url. Optional: maxPages (1–10000, default 10), maxDepth (1–100, default 2), pathPrefix (only crawl URLs whose path starts with this, e.g. "/docs"), budgetUsd (spend ceiling; the crawl stops with status token_cap_exceeded if it would exceed it), useSitemap (also seed the site's root /sitemap.xml — one extra billed page, but finds pages links miss). A maxPages or maxDepth outside its range, 0 included, is rejected rather than replaced by the default — omit the field to get the default. Returns jobId, estimatedPages, and estimatedCostUsd with status awaiting_approval.

{ "action": "submit", "url": "https://example.com", "maxPages": 200, "maxDepth": 3 }

2. approve — start the quoted crawl (requires jobId). This is the billing-consent step: pages are billed as they are fetched, capped by the quote/budget. Before approving a non-trivial estimatedCostUsd, confirm the spend with your user. Fails with status 402 if the account balance cannot cover the quote; a 409 partial_state error means an earlier approve was interrupted — just call approve again.

3. status — poll progress (requires jobId). Statuses: awaiting_approval → running → terminal completed | failed | canceled | token_cap_exceeded (budget hit before maxPages; collected results are still readable). While running it returns pending and processed counts; a partial_state status means an interrupted approve — call approve again to repair it. Status never includes the URL list — page that with results. Poll every few seconds for small crawls; give hundreds-of-pages crawls tens of seconds between polls.

4. results — page through discovered URLs (requires jobId). Optional limit (1–5000, default 1000) and offset (≥ 0); out-of-range values are rejected. total tells you when to stop paging. Each entry has url, statusCode (0 = discovered but not fetched), depth, parentUrl, isSitemap, sourceType, and an error when that page failed. discoveredUrls (links found on the page) is only present for ~1h after completion; afterwards results come from durable storage which omits it — everything else stays available.

5. cancel — stop a running or pending job (requires jobId). Already-terminal jobs return a 409 error. Pages already fetched stay billed and readable via results.

6. list — recent crawl jobs for the account. Optional limit (1–100, default 20) and offset (≥ 0); out-of-range values are rejected. Use it to find a jobId you lost or check for an equivalent recent crawl before paying for a new one.

Typical workflow: submit → check estimatedCostUsd → approve → poll status until terminal → results (paged). A 404 on any jobId action means the job doesn't exist or belongs to another account; a 403 on submit means the target domain is blocked for this account (contact support@usestring.ai).

Returns: the JSON envelope for the chosen action (quote, status, URL page, job list) alongside a one-line summary.

Input Schema

NameRequiredDescriptionDefault
urlNosubmit only (required there): the full http(s) URL to start crawling from. The crawl stays on this URL's domain.
jobIdNoThe job id returned by submit. Required for approve, status, results, and cancel.
limitNoresults/list only: page size. results 1-5000 (default 1000); list 1-100 (default 20). 0 or any value outside the range is rejected.
actionYesLifecycle action to perform: 'submit' (quote a new crawl), 'approve' (start a quoted crawl — billing consent), 'status' (poll progress), 'results' (page through discovered URLs), 'cancel' (stop a job), or 'list' (recent jobs).
offsetNoresults/list only: number of rows to skip for pagination (0 or more).
maxDepthNosubmit only: maximum link depth from the start URL, 1-100 (server default 2 when omitted; 0 or any value outside the range is rejected).
maxPagesNosubmit only: maximum pages to fetch, 1-10000 (server default 10 when omitted; 0 or any value outside the range is rejected). Each fetched page is billed.
budgetUsdNosubmit only: spend ceiling in USD (min 0.0001). The crawl finalizes as token_cap_exceeded when it would exceed this; omit to let the approved quote be the cap.
pathPrefixNosubmit only: restrict the crawl to URLs whose path starts with this prefix, e.g. '/docs'.
useSitemapNosubmit only: also seed the crawl from the site's root /sitemap.xml (one extra billed page; finds pages that internal links miss).

Output Schema

NameRequiredDescriptionDefault
jobsNo
urlsNo
jobIdNo
totalNo
statusNo
pendingNo
processedNo
finishedAtNo
errorMessageNo
estimatedPagesNo
pagesProcessedNo
estimatedCostUsdNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • changedInput schema / properties / limit / description
      Previous value: -"results/list only: page size. results default 1000 (max 5000); list default 20 (max 100)."New value: +"results/list only: page size. results 1-5000 (default 1000); list 1-100 (default 20). 0 or any value outside the range is rejected."
    • changedInput schema / properties / limit / type
      Previous value: -"integer"New value: +[
      +  "null",
      +  "integer"
      +]
    • changedInput schema / properties / maxDepth / description
      Previous value: -"submit only: maximum link depth from the start URL, 1-100 (server default 2)."New value: +"submit only: maximum link depth from the start URL, 1-100 (server default 2 when omitted; 0 or any value outside the range is rejected)."
    • changedInput schema / properties / maxDepth / type
      Previous value: -"integer"New value: +[
      +  "null",
      +  "integer"
      +]
    • changedInput schema / properties / maxPages / description
      Previous value: -"submit only: maximum pages to fetch, 1-10000 (server default 10). Each fetched page is billed."New value: +"submit only: maximum pages to fetch, 1-10000 (server default 10 when omitted; 0 or any value outside the range is rejected). Each fetched page is billed."
    • changedInput schema / properties / maxPages / type
      Previous value: -"integer"New value: +[
      +  "null",
      +  "integer"
      +]
    • changedInput schema / properties / offset / description
      Previous value: -"results/list only: number of rows to skip for pagination."New value: +"results/list only: number of rows to skip for pagination (0 or more)."
    • changedInput schema / properties / offset / type
      Previous value: -"integer"New value: +[
      +  "null",
      +  "integer"
      +]
    • removedOutput schema / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / jobs / items / additionalProperties
      Removed value: -false
    • removedOutput schema / properties / urls / items / additionalProperties
      Removed value: -false
  2. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Goes far beyond the annotations: billing-consent semantics of approve, per-page billing, 402/403/404/409 error meanings, the partial_state repair path, token_cap_exceeded budget behavior, the ~1h TTL on discoveredUrls, and the fact that canceled pages stay billed. The destructiveHint/openWorldHint annotations are generic; this text supplies the operational reality.

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?

Long but front-loaded and rigorously structured: purpose, exclusions, then a numbered lifecycle with embedded examples. Every section maps to a distinct action, so little is wasted, though the trailing 'Returns:' sentence is largely redundant given the output schema exists.

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 10-parameter, six-action, billable, asynchronous tool with an output schema, this leaves nothing essential unstated: state machine, error codes, pagination termination, budget exhaustion, and result durability are all covered.

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%, so the baseline is 3, but the description adds real meaning: out-of-range maxPages/maxDepth are rejected rather than silently defaulted, useSitemap costs one extra billed page, and limit/offset bounds differ per action. Billing implications of maxPages and the budgetUsd cap relationship are not 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?

States a specific verb and resource ('Manage an asynchronous crawl of authorized public pages on one website') and immediately names what it is not for, routing the agent to web_access_fetch and web_access_search by name. An agent can distinguish this from all three siblings without opening a schema.

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?

Explicitly lists when to use it (site audits, retrieval worklists, coverage checks before fetching pages), when not (single-page reads, open-ended queries) with the correct alternative named. It even supplies the canonical workflow (submit → check estimate → approve → poll → results) and the decision rule for choosing between actions.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.