Skip to main content
Glama

Read a web page

scrape
Read-only

Read one public web page and return its content: the main text (as Markdown with response_format="markdown"), links, metadata and a quality score, plus the raw HTML if you ask (return_html). Set render=true for pages that build their content with JavaScript, or mode="auto" to render only when a plain fetch comes back empty. extract pulls named fields out with CSS selectors. Costs 1 credit for a plain fetch and 5 credits when the page is rendered; with return_html a plain fetch costs 1 credit for each started 400 KB of HTML returned, at most 5. A failed call costs nothing. Pages that disallow automated access or need a login cannot be read.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "url": "<url>"
    },
    "name": "scrape"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlYesThe full public http(s) address of the page.
modeNo"manual" (the default) does what render says. "auto" fetches the page plainly and renders it only when it looks empty; it holds up to max_cost credits and charges what it used.manual
renderNoRun the page's JavaScript in a browser first, for pages that build their content in the browser. Costs more.
countryNoTwo-letter country code for the language headers of the request, for example ae or gb. It does not route the request through that country.
extractNoNamed fields to pull out with a CSS selector, for example {"heading":{"selector":"h1"},"links":{"selector":"a","attribute":"href", "multiple":true}}. One tag, class, ID or attribute selector each. Static pages only.
wait_msNoMilliseconds to wait after the page loads. Needs render=true.
max_costNoWith mode=auto, the most to spend: 1 never renders, 5 may render.
wait_forNoA CSS selector to wait for before reading. Needs render=true.
return_htmlNoAlso return the page's raw HTML in data.html (up to 2 MB). Costs 1 credit for each started 400 KB of HTML returned, at most 5. Not with extract.
idempotency_keyNoOptional. Send the same key (16 to 128 letters, digits, _ . : -) to retry this exact call safely: a retry within 24 hours returns the first result and is not charged again.
response_formatNoUse "markdown" to get the page's main content as Markdown in data.markdown, the best form for reading or summarising. "all" (the default) and "text" return the standard fields: text, links, metadata and a quality score.all
min_quality_scoreNoRefuse the page, at no charge, when its quality score is below this.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / return_html / description
      Previous value: -"Also return the page's raw HTML in data.html (up to 2 MB). Not with extract."New value: +"Also return the page's raw HTML in data.html (up to 2 MB). Costs 1 credit for each started 400 KB of HTML returned, at most 5. Not with extract."
  2. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only say readOnly and openWorld; the description adds the pricing model (1 credit plain, 5 rendered, per-400 KB HTML billing capped at 5), that failed calls are free, and that blocked or login-gated pages fail. That is substantial cost and failure behavior an agent cannot infer from the schema or annotations.

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 purpose and output shape, then moves through the mode switches and ends on cost and limits. Dense but each sentence carries information; the pricing detail for return_html is the densest stretch but is genuinely needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter tool with no output schema, the description covers purpose, output fields, rendering strategy, extraction, and cost — enough to call it correctly. Minor gaps remain, such as no mention of pagination-free/2 MB HTML cap or which parameters are inert unless render=true, both of which are only in schema descriptions.

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 already 100%, so the baseline is 3, but the description adds cross-parameter semantics the schema states only locally: render vs. mode='auto' interaction, that extract is static-only, and that return_html cannot be combined with extract. It does not cover country, wait_ms/wait_for, or idempotency_key, which live entirely 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 ('Read one public web page and return its content') and enumerates exactly what comes back (main text, links, metadata, quality score, optional raw HTML). That is enough to separate it from the specialized siblings like extract_products or search, which operate on queries or verticals rather than a single URL.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete conditions for the main branch points: render=true for JS-built pages, mode='auto' to render only when a plain fetch is empty, extract for CSS-selector field pulling, return_html only when raw HTML is needed. It also states a hard exclusion ('pages that disallow automated access or need a login cannot be read') but never routes the agent to a sibling tool as an alternative.

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