Skip to main content
Glama
lmcc-dev

mult-fetch-mcp-server

by lmcc-dev

fetch_html

Fetch a web page as raw HTML from an absolute URL, with optional proxy, headers, timeout, and size limits. Use for HTML-only retrieval; prefer the fetch tool for other formats.

Instructions

Deprecated alias of fetch with format="html". Returns 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

A3.6/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 discloses the two facts that matter most here — deprecation status and that it is an alias delegating to `fetch` — but says nothing about error behavior, redirects, SSRF checks, or how truncation/continuation works, all of which live only in the schema.

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?

Three short sentences, front-loaded with the deprecation notice and the redirect to `fetch` — the two things an agent must see first. "Returns HTML" is slightly redundant with format="html", a minor cost only.

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 25-parameter, annotation-free tool the description is thin, but it deliberately delegates that complexity to `fetch`, which is a defensible strategy for a deprecated alias. An agent that ignores the redirect would still be under-informed about most parameters, so it is adequate rather than complete.

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% across 25 parameters, so the schema already documents every field in detail. The description's only parameter remark ("startCursor is not required") duplicates the schema's own wording, so it adds no meaning beyond the structured data; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource implicitly (fetch, HTML) and frames the tool precisely as a deprecated alias of `fetch` with format="html", which distinguishes it from fetch_json, fetch_txt, fetch_markdown and fetch_plaintext. An agent can identify it without opening the schema.

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?

"Prefer the fetch tool" gives an explicit alternative and the condition that selects it, which is exactly the right guidance for a deprecated alias. It does not say when this tool would still be the correct choice (e.g. pinned legacy callers), but the routing intent is unambiguous.

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