Skip to main content
Glama
lmcc-dev

mult-fetch-mcp-server

by lmcc-dev

fetch_plaintext

Fetch a web page and return plain text extracted from HTML, supporting cursor-based continuation for truncated responses. Deprecated: prefer the fetch tool.

Instructions

Deprecated alias of fetch with format="plaintext". Returns plain text extracted from HTML. Prefer the fetch tool. startCursor is not required.

Input Schema

NameRequiredDescriptionDefault
urlYesAbsolute http(s) URL to fetch. Required on the first call. Optional when cursor or chunkId continues a truncated response.
debugNoWrite debug logs to stderr. Default: false. Do not enable unless the user asked for diagnostics.
proxyNoOptional proxy URL (http://host:port or https://host:port).
cursorNoContinuation token from a previous truncated response (nextCursor). Omit on the first call. When set, the server returns the next slice and does not refetch the URL.
chunkIdNoLegacy or document id. Prefer cursor. With a 1.x byte chunk, also pass startCursor.
headersNoOptional request headers as a string-to-string map.
noDelayNoSkip the random delay between redirects. Default: false.
timeoutNoRequest timeout in milliseconds. Default: 30000.
maxBytesNoMaximum UTF-8 bytes to return in this response. Default: 1048576. Used together with maxChars; the smaller budget wins.
maxCharsNoMaximum characters to return in this response. Default: 100000. The cut prefers a newline or space. Omit this on a normal fetch.
useBrowserNoUse the optional headless browser. Default: false. Requires puppeteer to be installed. Leave false for normal HTTP fetches.
saveCookiesNoKeep cookies for the same site across browser-mode calls. Default: true.
startCursorNoLegacy byte offset used only with chunkId from a 1.x split. Not required. Do not send this for a normal fetch or for a cursor continuation.
closeBrowserNoClose the browser after this call. Default: false.
maxRedirectsNoMaximum redirects to follow. Default: 10. Each redirect is checked for SSRF.
autoDetectModeNoRetry with the browser after an HTTP 403 or challenge page. Default: false. Set true only when the HTTP fetch is blocked and puppeteer is installed.
extractContentNoExtract the main article with Readability before converting. Default: true for markdown and plaintext, false for html, json, and txt.
scrollToBottomNoScroll to the bottom before reading the page in browser mode. Default: false.
useSystemProxyNoUse HTTP_PROXY / HTTPS_PROXY / NO_PROXY when no proxy argument is set. Default: true.
waitForTimeoutNoExtra wait after load in browser mode, in milliseconds. Default: 5000.
includeMetadataNoInclude title, byline, and site name when extractContent is true. Default: true.
waitForSelectorNoCSS selector to wait for in browser mode.
contentSizeLimitNoLegacy byte chunk size. When set without maxChars/maxBytes, the 1.x byte splitter is used. Prefer maxChars.
fallbackToOriginalNoIf Readability finds no article, convert the original document. Default: true.
enableContentSplittingNoWhen false, oversized content is truncated with no continuation cursor. Default: true.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed26 schema fields changedv2.0.0
    • changedInput schema / properties / autoDetectMode / description
      Previous value: -"Optional flag to automatically switch to browser mode if standard fetch fails (default: true). Set to false to strictly use the specified mode without automatic switching."New value: +"Retry with the browser after an HTTP 403 or challenge page. Default: false. Set true only when the HTTP fetch is blocked and puppeteer is installed."
    • changedInput schema / properties / chunkId / description
      Previous value: -"Optional chunk ID for retrieving a specific chunk of content from a previous request. The system adds prompts in the format === SYSTEM NOTE === ... =================== which AI models should ignore when processing the content."New value: +"Legacy or document id. Prefer cursor. With a 1.x byte chunk, also pass startCursor."
    • changedInput schema / properties / closeBrowser / description
      Previous value: -"Optional flag to close the browser after fetching (default: false)"New value: +"Close the browser after this call. Default: false."
    • changedInput schema / properties / contentSizeLimit / description
      Previous value: -"Optional maximum content size in bytes before splitting into chunks (default: 50KB). Set between 20KB-50KB for optimal results. For large content, prefer smaller values (20KB-30KB) to avoid truncation."New value: +"Legacy byte chunk size. When set without maxChars/maxBytes, the 1.x byte splitter is used. Prefer maxChars."
    • addedInput schema / properties / cursor
      Added value: +{
      +  "description": "Continuation token from a previous truncated response (nextCursor). Omit on the first call. When set, the server returns the next slice and does not refetch the URL.",
      +  "type": "string"
      +}
    • changedInput schema / properties / debug / description
      Previous value: -"Optional flag to enable detailed debug logging (default: false)"New value: +"Write debug logs to stderr. Default: false. Do not enable unless the user asked for diagnostics."
    • changedInput schema / properties / enableContentSplitting / description
      Previous value: -"Optional flag to enable content splitting for large responses (default: true)"New value: +"When false, oversized content is truncated with no continuation cursor. Default: true."
    • changedInput schema / properties / extractContent / description
      Previous value: -"Optional flag to enable intelligent content extraction using Readability algorithm (default: false). Extracts main article content from web pages."New value: +"Extract the main article with Readability before converting. Default: true for markdown and plaintext, false for html, json, and txt."
    • changedInput schema / properties / fallbackToOriginal / description
      Previous value: -"Optional flag to fall back to the original content when extraction fails (default: true). Only works when extractContent is true."New value: +"If Readability finds no article, convert the original document. Default: true."
    • changedInput schema / properties / headers / description
      Previous value: -"Optional headers to include in the request"New value: +"Optional request headers as a string-to-string map."
    • changedInput schema / properties / includeMetadata / description
      Previous value: -"Optional flag to include metadata (title, author, etc.) in the extracted content (default: false). Only works when extractContent is true."New value: +"Include title, byline, and site name when extractContent is true. Default: true."
    • addedInput schema / properties / maxBytes
      Added value: +{
      +  "description": "Maximum UTF-8 bytes to return in this response. Default: 1048576. Used together with maxChars; the smaller budget wins.",
      +  "type": "number"
      +}
    • addedInput schema / properties / maxChars
      Added value: +{
      +  "description": "Maximum characters to return in this response. Default: 100000. The cut prefers a newline or space. Omit this on a normal fetch.",
      +  "type": "number"
      +}
    • changedInput schema / properties / maxRedirects / description
      Previous value: -"Optional maximum number of redirects to follow (default: 10)"New value: +"Maximum redirects to follow. Default: 10. Each redirect is checked for SSRF."
    • changedInput schema / properties / noDelay / description
      Previous value: -"Optional flag to disable random delay between requests (default: false)"New value: +"Skip the random delay between redirects. Default: false."
    • changedInput schema / properties / proxy / description
      Previous value: -"Optional proxy server to use (format: http://host:port or https://host:port)"New value: +"Optional proxy URL (http://host:port or https://host:port)."
    • changedInput schema / properties / saveCookies / description
      Previous value: -"Optional flag to save cookies for future requests to the same domain (default: true)"New value: +"Keep cookies for the same site across browser-mode calls. Default: true."
    • changedInput schema / properties / scrollToBottom / description
      Previous value: -"Optional flag to scroll to bottom of page in browser mode (default: false)"New value: +"Scroll to the bottom before reading the page in browser mode. Default: false."
    • changedInput schema / properties / startCursor / description
      Previous value: -"Starting cursor position in bytes. Set to 0 for initial requests, and use the value from previous responses for subsequent requests to resume content retrieval."New value: +"Legacy byte offset used only with chunkId from a 1.x split. Not required. Do not send this for a normal fetch or for a cursor continuation."
    • changedInput schema / properties / timeout / description
      Previous value: -"Optional timeout in milliseconds (default: 30000)"New value: +"Request timeout in milliseconds. Default: 30000."
    • changedInput schema / properties / url / description
      Previous value: -"URL of the website to fetch"New value: +"Absolute http(s) URL to fetch. Required on the first call. Optional when cursor or chunkId continues a truncated response."
    • changedInput schema / properties / useBrowser / description
      Previous value: -"Optional flag to use headless browser for fetching (default: false)"New value: +"Use the optional headless browser. Default: false. Requires puppeteer to be installed. Leave false for normal HTTP fetches."
    • changedInput schema / properties / useSystemProxy / description
      Previous value: -"Optional flag to use system proxy environment variables (default: true)"New value: +"Use HTTP_PROXY / HTTPS_PROXY / NO_PROXY when no proxy argument is set. Default: true."
    • changedInput schema / properties / waitForSelector / description
      Previous value: -"Optional CSS selector to wait for when using browser mode"New value: +"CSS selector to wait for in browser mode."
    • changedInput schema / properties / waitForTimeout / description
      Previous value: -"Optional timeout to wait after page load in browser mode (default: 5000)"New value: +"Extra wait after load in browser mode, in milliseconds. Default: 5000."
    • changedInput schema / required
      Previous value: -[
      -  "url",
      -  "startCursor"
      -]New value: +[
      +  "url"
      +]
  2. First observedv1.3.2

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden; it discloses the key behavioral facts (deprecated alias, plaintext extraction from HTML, optional legacy cursor param). It does not discuss browser mode, cookie retention, redirect/SSRF handling, or truncation cursors, but those are documented per-parameter in a 100%-covered schema, which offsets the gap.

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 short sentences, deprecation front-loaded, and the replacement named immediately. Nothing in it is redundant or padding.

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

Completeness3/5

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

For a deprecated alias the brevity is defensible, and the redirect to 'fetch' covers the main decision. However, with 25 parameters, no annotations, and no output schema, the description does not confirm whether these parameters behave identically to 'fetch' or which ones are inert in the alias, leaving some ambiguity for an agent that must still call it.

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 every one of the 25 parameters is already documented. The description only clarifies that startCursor is optional, which the schema already states, and adds no further meaning about the legacy chunkId pairing or which params matter in plaintext mode.

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 plus the exact equivalence ('deprecated alias of fetch with format="plaintext"') and the return shape ('plain text extracted from HTML'). It also names the sibling to use instead, so an agent can distinguish it from fetch_html, fetch_json, fetch_txt, and fetch_markdown 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 marks the tool as deprecated and routes the agent to the 'fetch' tool, which is the clearest possible when-not-to-use signal. It also resolves the one likely call-site question by noting 'startCursor is not required'.

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