Skip to main content
Glama

Read a web page as clean Markdown

read
Read-only

Read one web page as clean Markdown (or plain text) for an LLM: the main content without menus, cookie banners and footers, plus title, description, author, published date, language and canonical URL; links on request. robots.txt is respected (a disallowed page is refused and not charged). No JavaScript is run. Price: $0.002 in USDC per successful call, paid with x402 (Base, Solana or Arc); failed calls are not charged.

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": "read"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlYesPage URL (http or https)
linksNo1 = also return the page's links (up to 300)
formatNomarkdown (default) or text
imagesNo1 = keep images with alt text as Markdown images
maxCharsNoCut the content at this many characters, 500-200000, default 30000

Output Schema

NameRequiredDescriptionDefault
urlNo
langNo
noteNo
charsNo
titleNo
authorNo
formatNo
statusNo
contentNo
finalUrlNo
siteNameNo
canonicalNo
fetchedAtNo
truncatedNo
wordCountNo
contentTypeNo
descriptionNo
publishedAtNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "author": {},
      +    "canonical": {},
      +    "chars": {},
      +    "content": {},
      +    "contentType": {},
      +    "description": {},
      +    "fetchedAt": {},
      +    "finalUrl": {},
      +    "format": {},
      +    "lang": {},
      +    "note": {},
      +    "publishedAt": {},
      +    "siteName": {},
      +    "status": {},
      +    "title": {},
      +    "truncated": {},
      +    "url": {},
      +    "wordCount": {}
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.2/5.0
Behavior5/5

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

With only readOnlyHint and openWorldHint supplied, the description carries a lot of real operational context: robots.txt is respected and a disallowed page is refused without charge, no JavaScript is executed, and there is a per-call price of $0.002 in USDC via x402 with failed calls free. Cost and failure semantics are exactly the kind of disclosure an agent needs before invoking a paid tool.

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?

Purpose is front-loaded in the first clause, and the sentence fragments after the semicolons each carry distinct information (metadata, robots, no JS, pricing). It is dense and the first sentence is long, but no clause 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?

Even though an output schema exists and return values need not be explained, the description still names the enriched fields an agent will see. Combined with the robots/JavaScript/payment behavior, nothing material about invoking this tool is left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters, making 3 the baseline. The description adds only 'links on request', which merely echoes the links parameter; the headings about title, author, and canonical URL describe output rather than input semantics.

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 web page as clean Markdown') plus the transformation performed ('main content without menus, cookie banners and footers'), so an agent knows exactly what it gets back. The scope qualifier 'one web page' distinguishes it from crawling/multi-page siblings even without naming them.

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

Usage Guidelines3/5

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

Usage is only implied: the mention of LLM-oriented output and 'links on request' suggests when it fits, but there is no explicit when-to-use or when-not, and no named alternative among the many nearby siblings (markdown, extract, pdf, llms_txt, web_archive). The robots.txt and no-JavaScript constraints are stated as behavior, not as selection guidance.

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