Skip to main content
Glama

Fetch web pages as clean Markdown with citations

fetch_clean_markdown
Read-only

Fetch public web pages and return clean Markdown of the main content without menus, ads, cookie banners, or footers, with metadata and a citation for reading, quoting, or summarizing pages.

Instructions

Fetches public web pages and returns their main content as clean Markdown (no menus, ads, cookie banners or footers), plus title, author, published/modified dates, language, canonical URL, a heading outline and a ready-made citation. Tables stay Markdown tables; code blocks keep their language. Use it to read, quote or summarise a page or load documentation; cite citation.url. chunk:true returns heading-aware chunks for long pages; mode "sitemap"/"crawl" (with maxPages, includeGlobs like "/docs/**") reads several pages of one site; rendering "auto" only if a page comes back nearly empty. Respects publishers: obeys robots.txt, never bypasses paywalls, logins, CAPTCHAs or bot protection, honours noai/TDM opt-outs — such pages return status "blocked"/"paywalled" with a reason and NO content; do not retry them by other means. Runs an Apify Actor on the caller's own Apify account (billed by Apify pay-per-event, capped per run).

Input Schema

NameRequiredDescriptionDefault
modeNo"urls" fetches the given pages; "sitemap" or "crawl" reads several pages of one site.urls
urlsYesPage URLs (or site / sitemap URLs for mode sitemap/crawl).
chunkNoReturn heading-aware chunks for long pages (for RAG).
maxDepthNoHow many links deep to follow in crawl mode.
maxPagesNoCap for sitemap/crawl modes.
chunkSizeNoTarget chunk size in tokens when chunk is true.
renderingNo"http" is fastest; use "auto" only if a page comes back nearly empty.http
chunkOverlapNoTokens of overlap between chunks.
excludeGlobsNoURL patterns to skip, e.g. "/blog/tag/**".
includeGlobsNoe.g. ["/docs/**"]
includeLinksNoKeep hyperlinks in the Markdown (false = fewer tokens).
includeImagesNoKeep image links in the Markdown.
contentSelectorNoOptional CSS selector to force the content region.
maxCharsPerPageNoServer-side truncation of markdown per page; truncatedForAgent=true when cut.

Output Schema

NameRequiredDescriptionDefault
runYes
toolYes
itemsYesResult records (trimmed for context). Records often carry a recordType discriminator.
notesYes
dryRunYestrue = built-in SAMPLE data from this server, NOT a real lookup
statusYes"running" = still working; call get_run_results with run.runId later
summaryYes
truncatedYestrue = more records exist than are included here (see datasetUrl)
datasetUrlNo
disclaimerNo
itemsTotalYes
sampleDataYestrue = the Actor returned fictional sample rows (e.g. no credentials configured); never present as real

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.1

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover safety profile (readOnly, openWorld, non-idempotent, non-destructive); the description adds the behavior an agent actually needs: robots.txt obedience, no paywall/login/CAPTCHA bypass, noai/TDM opt-outs, terminal statuses 'blocked'/'paywalled' with a reason and no content, truncation via maxCharsPerPage, and billing on the caller's own Apify account capped per run.

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?

Front-loaded with the output contract, then mode/billing/policy clauses in a logical order, with no filler sentences. It is a single dense paragraph, so the policy, mode, and billing concerns run together without visual separation; light grouping would improve scanability.

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?

Despite an output schema, the description still summarizes the return shape and flags the two terminal statuses, which is the information an agent needs to branch on. Combined with per-mode guidance and billing/rate constraints, nothing needed to invoke it correctly is missing.

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 coverage is 100%, so the baseline is 3; the description earns above baseline by explaining cross-parameter intent — why to use chunk:true, how mode 'sitemap'/'crawl' interacts with maxPages and includeGlobs, and the trigger condition for rendering 'auto' — rather than restating field docs. It does not cover chunkSize/chunkOverlap/maxDepth/maxCharsPerPage semantics, which remain schema-only.

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 ('Fetches public web pages and returns their main content as clean Markdown') plus the exact payload produced (title, author, dates, outline, citation). No sibling tool does page fetching, so the distinction is inherent, and the boilerplate-stripping scope is unambiguous.

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?

Names concrete use cases ('read, quote or summarise a page or load documentation') and gives conditional guidance for each mode: chunk:true for long pages, sitemap/crawl for multi-page sites, rendering 'auto' only if a page comes back nearly empty. It also states an explicit stop condition — blocked/paywalled pages must not be retried by other means.

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