Stringer CleanExtract
Server Details
Convert public HTML or a public URL into token-dense Markdown through one remote MCP tool.
- Status
- Healthy
- Uptime
- 100.0% over 43 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 2 tools
The two tools have clearly distinct roles: clean_extract_outline is a free, body-less preview returning section ids, while clean_extract performs the paid, full/section extraction. The descriptions explicitly state the intended ordering ('use it first'), so an agent cannot confuse them.
Both names use the same snake_case clean_extract_* convention, which is predictable and readable. The only minor deviation is that the outline tool is a suffixed variant of the base name rather than a distinct verb_noun pair.
Two tools is thin, but the server is deliberately narrow (a paid extraction plus a free reconnaissance call), so each earns its place. Still, the surface sits in the borderline '1-2 tools' band with no batch or management operations.
The preview-then-extract lifecycle covers the core workflow end to end, including free-trial accounting and named error states. Minor gaps exist (no batch extraction, no output-format options or retrieval of past extractions), but nothing that blocks the main use case.
Available Tools
2 toolsclean_extractRead a web page as clean MarkdownAInspect
Extract a full page or selected sections from a public URL or raw HTML as clean Markdown, with navigation, scripts and page chrome removed. Use it instead of a raw fetch when a task needs the text of documentation, an article, an RFC or another reference page: in a five-site benchmark the Markdown was 62% fewer estimated tokens than the HTML. Call the free clean_extract_outline first on a long page, then pass only the section ids you need. A call is charged only when it returns usable content; the first 3 usable extraction calls are free, total, then USD 0.05. Uncharged failures name upstream_timeout, upstream_http_error, bot_challenge, js_shell, empty_extraction, or sections_not_found. Recoverable structured data names fallback_used. Every success reports extraction_quality and extraction_content_ratio_band.
| Name | Required | Description | Default |
|---|---|---|---|
| sections | No | Optional ids from clean_extract_outline. Return only these sections in document order. | |
| url_or_html | Yes | A public HTTP(S) URL or a raw HTML string to convert into Markdown. | |
| max_output_bytes | No | Optional maximum UTF-8 byte length of the returned Markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only carry openWorldHint, so the description carries the behavioral load and does so richly: billing model (charged only on usable content, first 3 free then USD 0.05), enumerated failure codes that are not charged, the fallback_used signal, and the success quality fields. These are non-obvious traits an agent needs to plan cost and retries.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the differentiating comparison, and every sentence carries weight (benchmark, sequencing, billing, error taxonomy). The error-code enumeration is dense but is genuinely decision-relevant, so only a small deduction for length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must describe returns — it does, naming extraction_quality, extraction_content_ratio_band and fallback_used. Combined with failure modes and billing, an agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented in the schema; the baseline is 3. The description adds only the origin of section ids (from clean_extract_outline) and document-order return, which is useful but marginal over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (extract), resource (full page or selected sections from URL/raw HTML), and output form (clean Markdown with navigation, scripts and chrome removed). Also distinguishes itself from a raw fetch, so an agent can tell it apart from generic retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it instead of a raw fetch for documentation, articles, RFCs or reference pages, and gives the sequencing rule: call clean_extract_outline first on a long page, then pass only the needed section ids. This is clear when-to-use and how-to-compose guidance referencing the sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clean_extract_outlineOutline a web page's sections (free)ARead-onlyInspect
Free outline with section ids, headings, byte sizes, and a fingerprint, without page body text or payment. It never uses the free extraction allowance. Use it first to see what a long page contains and which sections are worth reading. A later clean_extract call can select sections and is charged only when it returns usable content. Uncharged failures name upstream_timeout, upstream_http_error, bot_challenge, js_shell, empty_extraction, or sections_not_found. Recoverable structured data names fallback_used.
| Name | Required | Description | Default |
|---|---|---|---|
| url_or_html | Yes | A public HTTP(S) URL or a raw HTML string to convert into Markdown. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations by disclosing the billing model (never consumes the free extraction allowance; clean_extract charged only on usable content), the enumerated uncharged failure reasons, and the fallback_used signal. This is exactly the behavioral context an agent needs to sequence calls safely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the free-outline framing and output fields, then the routing advice, then billing and error semantics. Dense but every sentence carries information; the error-code list is the only slightly bulky element, yet it is genuinely useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a single trivial parameter, the description compensates by naming the returned fields, the failure modes, and the fallback signal. An agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema coverage is 100%, so the schema already documents url_or_html fully. The description adds no syntax or format detail beyond the schema (the schema itself even says convert to Markdown, which is not quite the tool's job). Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (outline) and resource (web page sections) and enumerates what the output contains: section ids, headings, byte sizes, and a fingerprint, explicitly excluding body text. This is distinguishable from the clean_extract sibling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes usage: 'Use it first to see what a long page contains and which sections are worth reading,' and names the alternative flow ('A later clean_extract call can select sections'). The when-to-use and the follow-on tool are both stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
clean_extract1 field changed- added
Input schema / properties / sectionsAdded value: +{ + "description": "Optional ids from clean_extract_outline. Return only these sections in document order.", + "items": { + "pattern": "^s[1-9][0-9]*$", + "type": "string" + }, + "maxItems": 50, + "minItems": 1, + "type": "array" +}
- Added
clean_extract_outline
1 tool update
- Removed
diagnose_extraction
1 tool update
- Added
diagnose_extraction
1 tool update
- Changed
clean_extract1 field changed- added
Input schema / properties / max_output_bytesAdded value: +{ + "description": "Optional maximum UTF-8 byte length of the returned Markdown.", + "maximum": 1048576, + "minimum": 1, + "type": "integer" +}
1 tool update
- Changed
clean_extract3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / url_or_html / descriptionPrevious value: -"The public URL or raw HTML string to convert into markdown."New value: +"A public HTTP(S) URL or a raw HTML string to convert into Markdown." - added
Input schema / properties / url_or_html / minLengthAdded value: +1
1 tool update
- First observed
clean_extract
Related MCP Connectors
Convert files, URLs, and documents to clean, AI-ready Markdown via MCP.
Fetch a URL and get clean Markdown with metadata. No API key required; rate-limited per IP.
Convert PDF documents to Markdown for AI agents through an authenticated remote MCP server.
Converts any URL to clean, LLM-ready Markdown using real Chrome browsers
Related MCP Servers
- AlicenseAqualityDmaintenanceConverts URLs and raw HTML to clean Markdown, enabling AI assistants to read web pages for summarization, analysis, or ingestion.27 npm1MIT
- AlicenseAqualityBmaintenanceEnables converting web pages to clean Markdown via MCP, compressing token usage by roughly 95% in under 150ms to support LLM context windows and RAG pipelines.2343 npm1MIT
- AlicenseNot gradedqualityDmaintenanceConverts URLs into clean, LLM-ready markdown, respecting robots.txt and never bypassing anti-bot measures or paywalls.MIT
- FlicenseNot gradedqualityBmaintenanceEnables MCP-compatible AI clients to extract live web content and convert it into structured Markdown for LLM ingestion, RAG pipelines, and agentic workflows.-
Glama MCP Gateway
Add one secure layer between your agents and this server.