Skip to main content
Glama

readfetch_scrape

Read-only

Load a public URL in headless Chromium and return Markdown, plain text, or HTML (format, plus status_code, title, cache_status, billed; optional links via advanced.include_links). mode sets latency and depth: fast (15 s, minimal render), render (30 s, default, full JS), full (60 s, scroll the page). fresh: true bypasses cache. Put scroll, wait_for, js_code, headers, cookies, and auth in advanced (options is deprecated, same shape). Prefer readfetch_text when JavaScript is not required; readfetch_fetch for raw HTTP/API bytes; readfetch_residential when the site blocks datacentre IPs; readfetch_screenshot for a PNG/JPEG. Bot-check or empty extractions may return billed: false with a hint.

Input Schema

NameRequiredDescriptionDefault
urlYesPublic http(s) URL to load in Chromium.
authNoOptional cookie, bearer, or basic auth for the page load.
modeNoWhole-call budget and render depth: fast (15 s), render (30 s, default), or full (60 s with page scroll).render
freshNoWhen true, bypass cached scrape results (default false).
formatNoPrimary body field returned: markdown (default), plain text, or raw HTML.markdown
optionsNoDeprecated — use `advanced` instead (same ScrapeOptions shape). Scheduled for removal in a future API semver bump.
advancedNoBrowser interactions: scroll, wait_for selector, js_code, headers, cookies, locale, include_links, etc.

Output Schema

NameRequiredDescriptionDefault
urlNo
titleNo
billedNo
statusNo
markdownNo
status_codeNo
cache_statusNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed21 schema fields changed
    • addedInput schema / $defs / Auth / properties / cookies / description
      Added value: +"Cookie jar when `type` is cookie; ignored for bearer/basic."
    • addedInput schema / $defs / Auth / properties / password / description
      Added value: +"Basic-auth password when `type` is basic."
    • addedInput schema / $defs / Auth / properties / token / description
      Added value: +"Bearer token when `type` is bearer (Authorization: Bearer …)."
    • addedInput schema / $defs / Auth / properties / type / description
      Added value: +"Authentication mode: `cookie` (set `cookies`), `bearer` (set `token`), or `basic` (set `username` and `password`)."
    • addedInput schema / $defs / Auth / properties / username / description
      Added value: +"Basic-auth username when `type` is basic."
    • addedInput schema / $defs / Cookie / properties / domain / description
      Added value: +"Optional domain scope, e.g. `.example.com`."
    • addedInput schema / $defs / Cookie / properties / name / description
      Added value: +"Cookie name."
    • addedInput schema / $defs / Cookie / properties / path / description
      Added value: +"Path scope within the domain (default `/`)."
    • addedInput schema / $defs / Cookie / properties / url / description
      Added value: +"Optional full URL scope for the cookie; alternative to `domain`/`path`."
    • addedInput schema / $defs / Cookie / properties / value / description
      Added value: +"Cookie value."
    • addedInput schema / $defs / ScrapeOptions / properties / cookies / description
      Added value: +"Inject cookies without `auth`; same shape as auth cookies."
    • addedInput schema / $defs / ScrapeOptions / properties / delay_before_return_ms / description
      Added value: +"Pause after navigation before snapshot (0–60000, default 0); use for short post-load animations."
    • addedInput schema / $defs / ScrapeOptions / properties / headers / description
      Added value: +"Extra HTTP request headers for the navigation (merged with defaults)."
    • addedInput schema / $defs / ScrapeOptions / properties / include_html / description
      Added value: +"When true, include raw HTML in the response in addition to the primary `format` field."
    • addedInput schema / $defs / ScrapeOptions / properties / include_links / description
      Added value: +"When true, add a `links` array (href/text) alongside the main body."
    • addedInput schema / $defs / ScrapeOptions / properties / js_code / description
      Added value: +"JavaScript executed in the page before extraction; one string or an array run in order. Disables shared-browser cache for this call."
    • addedInput schema / $defs / ScrapeOptions / properties / max_scroll_steps / description
      Added value: +"Cap scroll iterations when `scan_full_page` is true (1–200); omit for engine default."
    • addedInput schema / $defs / ScrapeOptions / properties / scan_full_page / description
      Added value: +"Scroll the page to trigger lazy-loaded content; combine with `mode=full` or `max_scroll_steps`."
    • addedInput schema / $defs / ScrapeOptions / properties / user_agent / description
      Added value: +"Override the default browser User-Agent for this render only."
    • addedInput schema / $defs / ScrapeOptions / properties / wait_for / description
      Added value: +"CSS selector that must appear before capture; pairs with `wait_for_timeout_ms`."
    • addedInput schema / $defs / ScrapeOptions / properties / wait_for_timeout_ms / description
      Added value: +"Max milliseconds to wait for `wait_for` (0–120000, default 10000)."
  2. Changed7 schema fields changed
    • addedInput schema / properties / advanced / description
      Added value: +"Browser interactions: scroll, wait_for selector, js_code, headers, cookies, locale, include_links, etc."
    • addedInput schema / properties / auth / description
      Added value: +"Optional cookie, bearer, or basic auth for the page load."
    • addedInput schema / properties / format / description
      Added value: +"Primary body field returned: markdown (default), plain text, or raw HTML."
    • addedInput schema / properties / fresh / description
      Added value: +"When true, bypass cached scrape results (default false)."
    • addedInput schema / properties / mode / description
      Added value: +"Whole-call budget and render depth: fast (15 s), render (30 s, default), or full (60 s with page scroll)."
    • addedInput schema / properties / url / description
      Added value: +"Public http(s) URL to load in Chromium."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "billed": {
      +      "type": "boolean"
      +    },
      +    "cache_status": {
      +      "type": "string"
      +    },
      +    "markdown": {
      +      "type": "string"
      +    },
      +    "status": {
      +      "type": "string"
      +    },
      +    "status_code": {
      +      "type": "integer"
      +    },
      +    "title": {
      +      "type": "string"
      +    },
      +    "url": {
      +      "format": "uri",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  3. Changed2 schema fields changed
    • removedInput schema / properties / egress
      Removed value: -{
      -  "description": "Exit to leave through: `direct` (this service's own datacentre egress) or `residential` (a residential address pool, for targets that refuse datacentre addresses). Omit to use the default route.",
      -  "title": "Egress",
      -  "type": "string"
      -}
    • removedInput schema / properties / egress_fallback
      Removed value: -{
      -  "description": "Pool to retry through once when the first attempt is refused (bot check, wall, empty extraction, origin 403/429/5xx); must differ from `egress`. Absent keeps one exit for the whole call.",
      -  "title": "Egress Fallback",
      -  "type": "string"
      -}
  4. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint; the description adds substantial context beyond them: per-mode latency budgets (15/30/60 s), that `fresh` bypasses cache, that `js_code` disables the shared-browser cache, that `options` is deprecated in favour of `advanced`, and that bot-checks can return `billed: false` with a hint. That is real behavioral disclosure an agent could not infer.

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?

A single dense paragraph with the core action and return shape front-loaded, then mode semantics, then cache behavior, then sibling routing, then the failure mode. No sentence is filler.

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?

Output schema exists so return values need not be explained, yet the description still names the key response fields and the billed:false edge case. For a 7-parameter tool with nested advanced options, nothing an agent needs to call 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 that by explaining cross-parameter effects the schema does not (mode sets both latency and render depth, js_code disables caching, advanced vs deprecated options share a shape). It does not enumerate every advanced field, but the schema already does.

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 ('Load a public URL in headless Chromium and return Markdown, plain text, or HTML') and immediately distinguishes itself from four named siblings with the condition that selects each. An agent can route correctly without opening any 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 names alternatives and their selection conditions: readfetch_text when JavaScript is not required, readfetch_fetch for raw HTTP/API bytes, readfetch_residential when datacentre IPs are blocked, readfetch_screenshot for images. Also gives when-to-use guidance for `fresh` and `mode`.

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.

Resources