Skip to main content
Glama
lmcc-dev

mult-fetch-mcp-server

by lmcc-dev

fetch_txt

Fetches a URL and returns its raw response body as plain text, supporting cursor continuation for truncated content. Use for simple text retrieval; prefer fetch for new work.

Instructions

Deprecated alias of fetch with format="txt". Returns the raw response body. 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.
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.
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.
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."
    • removedInput schema / properties / extractContent
      Removed value: -{
      -  "description": "Optional flag to enable intelligent content extraction using Readability algorithm (default: false). Extracts main article content from web pages.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / fallbackToOriginal
      Removed value: -{
      -  "description": "Optional flag to fall back to the original content when extraction fails (default: true). Only works when extractContent is true.",
      -  "type": "boolean"
      -}
    • 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."
    • removedInput schema / properties / includeMetadata
      Removed value: -{
      -  "description": "Optional flag to include metadata (title, author, etc.) in the extracted content (default: false). Only works when extractContent is true.",
      -  "type": "boolean"
      -}
    • 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.1/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full behavioral burden. It usefully discloses deprecation status and that the raw body is returned, but says nothing about truncation/continuation behavior, browser-mode side effects, cookie retention, or the SSRF/redirect checking that the 22-parameter surface implies.

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, no filler, with the deprecation warning front-loaded before the behavioral note and the migration pointer. Every sentence earns its place.

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 22-parameter tool with no annotations and no output schema, the description does the minimum: it establishes deprecation and return format, and the rich per-parameter schema descriptions cover the rest of the mechanics. However, it does not surface the cursor/chunk continuation model or browser-mode prerequisites at the top level, which an agent must piece together from the schema.

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 baseline is 3. The only parameter remark in the description (startCursor not required) merely restates what the schema already says verbatim ("Not required. Do not send this for a normal fetch"), adding no new meaning.

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?

"Deprecated alias of fetch with format=\"txt\"" names the exact operation and its relationship to the canonical sibling, and "Returns the raw response body" pins down the output shape. An agent can distinguish this from fetch, fetch_html, fetch_plaintext, 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?

The description contains an explicit routing instruction: "Prefer the fetch tool", plus a targeted caveat that startCursor is not required. That covers both the when-to-use (effectively never, except for legacy callers) and the alternative.

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