Skip to main content
Glama

fetch_reader

Read-onlyIdempotent

Fetch a URL, extract the main article content, and convert it to clean markdown for LLM input, removing navigation, footer, and sidebar noise.

Instructions

GET a URL, locate the main article body (prefers , , itemprop=articleBody, or known CMS class names; falls back to ), strip navigation/footer/aside chrome, and convert to clean markdown. Returns { title, byline, markdown, wordCount }. Optimized for feeding long-form articles into an LLM without header/footer/sidebar noise.

Input Schema

NameRequiredDescriptionDefault
urlYes
max_bytesNo
timeout_msNo
user_agentNo
max_redirectsNo
allow_private_hostsNoAllow loopback / private / link-local targets for this call (default false). Refused unless the server operator launched fetch-mcp with FETCH_MCP_ALLOW_PRIVATE_HOSTS=1 -- SSRF protection stays on by default either way.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.8.0
    • addedInput schema / properties / allow_private_hosts / description
      Added value: +"Allow loopback / private / link-local targets for this call (default false). Refused unless the server operator launched fetch-mcp with FETCH_MCP_ALLOW_PRIVATE_HOSTS=1 -- SSRF protection stays on by default either way."
  2. First observedv0.6.1

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations (readOnly, idempotent, non-destructive), the description openly details the extraction strategy: preferred selectors, fallback to <body>, chrome stripping, and the exact return shape. This adds meaningful behavioral context that annotations alone do not provide.

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?

Three dense sentences with no filler. The core behavior is front-loaded, the selector strategy and fallback are compactly summarized, and the use case is stated last without redundancy.

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?

The description covers the main purpose, return fields, and typical use case, which is substantial for a tool with no output schema. It omits edge-case behavior such as what happens when extraction fails or how optional limits like max_bytes interact with the returned markdown, but these are minor gaps given the complexity.

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

Parameters2/5

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

Schema description coverage is only 17%, with only allow_private_hosts explained in the schema. The tool description does not compensate: it mentions the URL target and output but adds no detail about max_bytes, timeout_ms, user_agent, or max_redirects behavior. The parameter names are suggestive, but the description itself contributes little semantic value.

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?

The description states a specific verb and resource: 'GET a URL, locate the main article body... and convert to clean markdown.' It clearly differentiates itself from siblings like http_get and fetch_html_to_markdown by emphasizing article extraction, chrome-stripping, and LLM-oriented output.

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?

The description gives clear context: it is 'optimized for feeding long-form articles into an LLM without header/footer/sidebar noise,' which tells an agent when to prefer it. It does not explicitly name alternatives or state when not to use it, but the usage context is strong enough to guide selection.

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