Skip to main content
Glama

readfetch_text

Read-only

Fetch a public URL and return its main readable content as Markdown or plain text, plus title, author, published date and site name. Strips navigation, ads and boilerplate. No JavaScript rendering by default (cheaper than readfetch_scrape); one Chromium fallback when plain HTTP is blocked. Prefer readfetch_fetch when you need raw status, headers, or non-HTML bytes; readfetch_scrape when the article only appears after JavaScript runs.

Input Schema

NameRequiredDescriptionDefault
urlYesPublic http(s) URL to read.
formatNoOutput flavour: Markdown keeps headings, lists and tables.markdown
max_bytesNoAbort if the response body exceeds this many bytes.
timeout_sNoTotal budget for the whole call in seconds: DNS, redirects, the render fallback and any retry share it.
accept_languageNoAccept-Language header, e.g. 'de-DE,de;q=0.9'. Defaults to en-US.

Output Schema

NameRequiredDescriptionDefault
urlNo
sizeNo
textNo
titleNo
formatNo
statusNo
metadataNo
status_codeNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "format": {
      +      "type": "string"
      +    },
      +    "metadata": {
      +      "properties": {
      +        "author": {
      +          "type": "string"
      +        },
      +        "date": {
      +          "type": "string"
      +        },
      +        "sitename": {
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "size": {
      +      "type": "integer"
      +    },
      +    "status": {
      +      "type": "string"
      +    },
      +    "status_code": {
      +      "type": "integer"
      +    },
      +    "text": {
      +      "type": "string"
      +    },
      +    "title": {
      +      "type": "string"
      +    },
      +    "url": {
      +      "format": "uri",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  2. 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"
      -}
  3. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint, so the description carries the real behavioral burden and does so: content stripping (nav/ads/boilerplate), no JS rendering by default, one Chromium fallback on block, and a relative cost signal versus readfetch_scrape. That is material context 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, zero filler, front-loaded with the outcome and return shape, then cost/fallback behavior, then sibling routing. Every clause carries decision-relevant information.

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?

An output schema exists, so the return-values burden is already met; the description still names the key metadata fields for orientation. For a read-only, open-world fetch tool, nothing an agent needs in order to call it correctly is absent.

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 coverage is 100% and each parameter already has a descriptive string, so the baseline is 3. The description only restates the output format choice (Markdown vs text) and adds nothing on max_bytes, timeout_s, or accept_language beyond what the schema documents.

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 ('fetch a public URL and return its main readable content') plus the concrete return payload: Markdown/text, title, author, date, site name. The parenthetical contrast with readfetch_scrape ('cheaper than') and the explicit sibling references make the boundary unmistakable.

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?

Gives explicit routing rules: use readfetch_fetch for raw status/headers/non-HTML bytes, readfetch_scrape when the article only renders after JavaScript. It also states the default operating mode (no JS) and that a single Chromium fallback occurs when plain HTTP is blocked, so the agent knows both when to pick this tool and what it will silently do.

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