Skip to main content
Glama
stand-out-of-my-sun

Diogenes Web Extraction, Readability & Markdown Engine MCP

Diogenes Web Extraction, Readability & Markdown Engine MCP (diogenes-web-scraping-engine-mcp)

Indexed on TensorBlock MCP Index Glama MCP Server M8ven Score Master Gateway

Diogenes Web Extraction, Readability & Markdown Engine MCP is a focused, zero-bloat Model Context Protocol (streamable-http) package powered by the Diogenes Microservice Gateway.

Instead of loading all 121 gateway endpoints into your LLM's context window, installing this package exposes only the 12 specialized web-scraping-engine tools needed for Web Extraction & Scraping:

12 high-performance web extraction, readability & markdown tools: clean LLM markdown compiler, readable article extractor, OpenGraph & JSON-LD metadata parser, HTML table to JSON/Markdown converter, CSS selector isolator, paywall & overlay bypass auditor, XML sitemap crawler, hyperlink extractor, HTML XSS sanitizer, contact & lead info parser, SEO heading diagnostics, and RSS/Atom feed compiler.


⚡ 1-Click Install for Cursor & Claude Desktop

No API keys, user accounts, or local dependencies required. Zero setup — paste directly into your client config:

🖱️ Cursor IDE (.cursor/mcp.json)

Add to .cursor/mcp.json in your project root or global Cursor settings:

{
  "mcpServers": {
    "diogenes-web-scraping-engine": {
      "transport": "streamable-http",
      "url": "https://diogenes-micro-gateway.corinth.workers.dev/mcp/web-scraping-engine"
    }
  }
}

🧠 Claude Desktop (claude_desktop_config.json)

Add to claude_desktop_config.json (Mac: ~/Library/Application Support/Claude/claude_desktop_config.json | Windows: %APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "diogenes-web-scraping-engine": {
      "transport": "streamable-http",
      "url": "https://diogenes-micro-gateway.corinth.workers.dev/mcp/web-scraping-engine"
    }
  }
}

Prefer local stdio? Run via npx:

npx -y @stand-out-of-my-sun/diogenes-web-scraping-engine-mcp

Related MCP server: Website to Markdown MCP

Included Tools in web-scraping-engine (12 Tools)

MCP Tool Name

Underlying REST Route

Settlement

Capability

extract_clean_markdown

POST /api/v1/extract/clean-markdown

10 sats (L402)

Converts raw HTML pages into clean, boilerplate-free, LLM-optimized Markdown with preserved hyperlinks and headings. Use when ingesting raw web documents or blog posts into agent context windows; for isolating tabular data into structured datasets, use parse_html_tables instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'html_content' ('conversion_mode' defaults to 'clean_semantic_article'), supports '?demo=true' or L402 (10 sats), and returns HTTP 400 if invalid.

scrape_readable_article

POST /api/v1/extract/readable-article

10 sats (L402)

Extracts primary article body, author bylines, publication timestamps, and estimated reading duration from web pages. Use when stripping navigation bars, advertisement containers, and cookie banners to isolate core editorial content; for converting full HTML to markdown, use extract_clean_markdown instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'html_content' ('readability_profile' defaults to 'article_body_strict'), supports '?demo=true' or L402 (10 sats), and returns HTTP 400 if invalid.

extract_structured_metadata

POST /api/v1/extract/structured-metadata

10 sats (L402)

Extracts OpenGraph tags, Twitter Card metadata, canonical URLs, and Schema.org JSON-LD microdata scripts from HTML. Use when indexing social share cards, author identity, breadcrumbs, and rich snippet schemas for AI search agents; for scanning page hyperlinks and outbound references, use extract_page_hyperlinks instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'html_content' ('metadata_targets' defaults to 'all_protocols'), supports '?demo=true' or L402 (10 sats), and returns HTTP 400 if invalid.

parse_html_tables

POST /api/v1/extract/html-tables

10 sats (L402)

Detects and parses HTML table elements into structured JSON record arrays and GitHub-Flavored Markdown tabular grids. Use when converting financial statements, product comparison grids, or sports statistics into structured data tables; for extracting raw clean markdown prose, use extract_clean_markdown instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'html_content' ('output_format' defaults to 'markdown_and_json'), supports '?demo=true' or L402 (10 sats), and returns HTTP 400 if invalid.

isolate_css_selectors

POST /api/v1/extract/css-selectors

10 sats (L402)

Evaluates CSS selector queries against HTML DOM trees to extract targeted inner text, outer HTML, or element attributes. Use when targeting specific elements like pricing badges, product titles, review cards, or navigation breadcrumbs; for parsing unstructured contact information, use extract_contact_info instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'html_content' and 'selector_query' ('extraction_mode' defaults to 'inner_text'), supports '?demo=true' or L402 (10 sats), and returns HTTP 400 if invalid.

detect_paywall_and_bypass

POST /api/v1/extract/paywall-detect

15 sats (L402)

Audits web page DOM hierarchies to detect soft paywalls, blur overlays, modal gates, and recovers concealed body text. Use when diagnosing paywall obstructions, diagnosing subscriber gating scripts, or auditing content access barriers; for assessing general SEO hygiene, use evaluate_seo_diagnostics instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'html_content' ('detection_profile' defaults to 'heuristic_dom_overlay'), supports '?demo=true' or L402 (15 sats), and returns HTTP 400 if invalid.

crawl_sitemap_urls

POST /api/v1/extract/sitemap-crawler

15 sats (L402)

Parses XML sitemaps and sitemap index files into structured URL trees with change frequency and last-modified filters. Use when discovering domain architectures, mapping crawl frontiers, or indexing blog/product catalogues; for extracting on-page hyperlinks from raw HTML, use extract_page_hyperlinks instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'sitemap_xml' ('filter_criteria' defaults to 'all_entries'), supports '?demo=true' or L402 (15 sats), and returns HTTP 400 if invalid.

extract_page_hyperlinks

POST /api/v1/extract/page-hyperlinks

10 sats (L402)

Extracts, normalizes, and filters internal and external hyperlinks, anchor texts, and downloadable asset targets from HTML. Use when building site crawlers, auditing broken links, or extracting reference citations; for isolating primary readable article narrative text, use scrape_readable_article instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'html_content' ('link_scope' defaults to 'all_links'), supports '?demo=true' or L402 (10 sats), and returns HTTP 400 if invalid.

sanitize_html_content

POST /api/v1/extract/sanitize-html

10 sats (L402)

Sanitizes raw HTML by removing malicious script tags, iframes, inline event handlers, and data URIs into safe markup. Use when preparing untrusted third-party web content for rendering in agent dashboards or email clients; for converting clean HTML into markdown, use extract_clean_markdown instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'html_content' ('sanitization_strictness' defaults to 'strip_scripts_and_iframes'), supports '?demo=true' or L402 (10 sats), and returns HTTP 400 if invalid.

extract_contact_info

POST /api/v1/extract/contact-info

10 sats (L402)

Extracts email addresses, telephone numbers, physical addresses, and social network handles from web text and DOM footers. Use when researching sales leads, aggregating business contact directories, or extracting customer service info; for parsing structured tabular data, use parse_html_tables instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'content' ('extraction_focus' defaults to 'all_contacts'), supports '?demo=true' or L402 (10 sats), and returns HTTP 400 if invalid.

evaluate_seo_diagnostics

POST /api/v1/extract/seo-diagnostics

10 sats (L402)

Audits HTML heading structures, title lengths, meta descriptions, image alt tags, and OpenGraph compliance into a health score. Use when auditing landing pages, verifying SEO compliance before publishing, or evaluating crawl friendliness; for extracting article bodies, use scrape_readable_article instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'html_content' ('audit_level' defaults to 'comprehensive_audit'), supports '?demo=true' or L402 (10 sats), and returns HTTP 400 if invalid.

compile_rss_feed

POST /api/v1/extract/rss-feed-compiler

15 sats (L402)

Transforms JSON item collections or article card arrays into standardized RSS 2.0, Atom 1.0, or JSON Feed 1.1 syndication feeds. Use when syndicating blog articles, product announcements, or changelog cards to RSS readers and AI agents; for compiling structured sitemap listings, use crawl_sitemap_urls instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'items_json' and 'channel_title' ('feed_standard' defaults to 'rss_2_0'), supports '?demo=true' or L402 (15 sats), and returns HTTP 400 if invalid.

Free Account-Less Demo Mode: Append ?demo=true to any REST endpoint above for an instant HTTP 200 schema preview at zero cost.


Other Modular Diogenes MCP Packages

Install only the domain packages relevant to your workflow:

Package

Scoped MCP Endpoint

Spoke Repository

1. EVE: Frontier Sui Move Suite (14 Tools)

https://diogenes-micro-gateway.corinth.workers.dev/mcp/eve-frontier

stand-out-of-my-sun/diogenes-eve-frontier-mcp

2. Agent Guardrails & Sandbox (12 Tools)

https://diogenes-micro-gateway.corinth.workers.dev/mcp/agent-guardrails

stand-out-of-my-sun/diogenes-agent-guardrails-mcp

3. Web3, DeFi & 402 Security (15 Tools)

https://diogenes-micro-gateway.corinth.workers.dev/mcp/web3-security

stand-out-of-my-sun/diogenes-web3-security-mcp

4. Gemini Suite & AI Agents (15 Tools)

https://diogenes-micro-gateway.corinth.workers.dev/mcp/gemini-suite

stand-out-of-my-sun/diogenes-gemini-suite-mcp

5. Context, Code & Solvers (15 Tools)

https://diogenes-micro-gateway.corinth.workers.dev/mcp/context-code-solver

stand-out-of-my-sun/diogenes-context-code-solver-mcp

6. Dev, Data & Workflow Utilities (14 Tools)

https://diogenes-micro-gateway.corinth.workers.dev/mcp/dev-utilities

stand-out-of-my-sun/diogenes-dev-utilities-mcp

7. Web Extraction, Readability & Markdown Engine (12 Tools)

https://diogenes-micro-gateway.corinth.workers.dev/mcp/web-scraping-engine

stand-out-of-my-sun/diogenes-web-scraping-engine-mcp

8. Neural Search, Grounded Research & Deep Intelligence (12 Tools)

https://diogenes-micro-gateway.corinth.workers.dev/mcp/neural-search-engine

stand-out-of-my-sun/diogenes-neural-search-engine-mcp

9. Database Intelligence, SQL Engine & Schema Guard (12 Tools)

https://diogenes-micro-gateway.corinth.workers.dev/mcp/database-intelligence

stand-out-of-my-sun/diogenes-database-intelligence-mcp

10. Full Master Gateway (All 121 Services)

https://diogenes-micro-gateway.corinth.workers.dev/mcp

stand-out-of-my-sun/diogenes-micro-gateway


TensorBlock & MCP Index Profile Metadata

Field

Value

Category

Web Extraction & Scraping

Transport

streamable-http

Endpoint

https://diogenes-micro-gateway.corinth.workers.dev/mcp/web-scraping-engine

Manifest

https://diogenes-micro-gateway.corinth.workers.dev/.well-known/mcp/web-scraping-engine.json

Health Check

https://diogenes-micro-gateway.corinth.workers.dev/api/v1/health

Auth

none (100% account-less free tier, MCP discovery & ?demo=true previews; optional 6 flexible crypto payment rails for production calls: L402, x402, Base MPP, Garlicoin 0-Conf, BSC WGRLC, or Prepaid GRLC session API keys)

Install Confidence

high (Zero-install remote Streamable HTTP endpoint + root package.json, smithery.yaml, server.json, glama.json, and mcp.json)

License

MIT

Verification

verified (@stand-out-of-my-sun verified via https://diogenes-micro-gateway.corinth.workers.dev/.well-known/tensorblock.json & https://diogenes-micro-gateway.corinth.workers.dev/.well-known/mcp/web-scraping-engine.json)

Maintainer

@stand-out-of-my-sun

Docs

https://diogenes-micro-gateway.corinth.workers.dev/llms.txt

Support

https://github.com/stand-out-of-my-sun/diogenes-web-scraping-engine-mcp/issues

Available Tools

12 tools
compile_rss_feedWeb Content to RSS 2.0 & Atom Feed CompilerA
Read-onlyIdempotent

Transforms JSON item collections or article card arrays into standardized RSS 2.0, Atom 1.0, or JSON Feed 1.1 syndication feeds. Use when syndicating blog articles, product announcements, or changelog cards to RSS readers and AI agents; for compiling structured sitemap listings, use crawl_sitemap_urls instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'items_json' and 'channel_title' ('feed_standard' defaults to 'rss_2_0'), supports '?demo=true' or L402 (15 sats), and returns HTTP 400 if invalid.

NameRequiredDescriptionDefault
items_jsonYesJSON string representing an array of article or feed items with title, link, and pubDate.
channel_titleYesHeadline title for the syndication feed channel.
feed_standardNoTarget syndication feed specification: RSS 2.0, Atom 1.0, or JSON Feed 1.1.

Output Schema

NameRequiredDescription
feed_xmlYesFormatted XML or JSON string ready for publication to feed subscribers.
item_countYesNumber of feed entries compiled into the syndicated document.
content_typeYesStandard MIME content type for the generated feed document.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover readOnly/idempotent/destructive/openWorld, yet the description still adds non-obvious operational traits: 32 KB payload cap, 60 RPM throttle, L402 payment option (15 sats), demo bypass, and an HTTP 400 failure on invalid input. These are exactly the constraints an agent must know before calling.

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?

Purpose is front-loaded in the first sentence and every subsequent clause carries information, but the final sentence is telegraphic ('Stateless read-only edge call (max 32 KB, 60 RPM)', 'L402 (15 sats)') and packs several unrelated facts into one dense run-on.

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 covers return values and annotations cover safety, and the description fills the remaining gaps: supported standards, size and rate limits, payment/demo access, and error behavior. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns an extra point by disclosing that 'feed_standard' defaults to 'rss_2_0', a default not stated in the schema. The remaining parameter mentions (items_json contents) merely restate the schema.

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?

Names a specific verb (transforms) and both input and output resources (JSON item collections / article card arrays → RSS 2.0, Atom 1.0, JSON Feed 1.1). It also names the sibling it is not (crawl_sitemap_urls) so an agent can route without opening either 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?

'Use when syndicating blog articles, product announcements, or changelog cards to RSS readers and AI agents' gives concrete positive triggers, and the sitemap clause explicitly excludes the nearest alternative. Both when-to-use and when-not-to-use are present.

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

crawl_sitemap_urlsXML Sitemap & Index Crawler Tree DecompilerA
Read-onlyIdempotent

Parses XML sitemaps and sitemap index files into structured URL trees with change frequency and last-modified filters. Use when discovering domain architectures, mapping crawl frontiers, or indexing blog/product catalogues; for extracting on-page hyperlinks from raw HTML, use extract_page_hyperlinks instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'sitemap_xml' ('filter_criteria' defaults to 'all_entries'), supports '?demo=true' or L402 (15 sats), and returns HTTP 400 if invalid.

NameRequiredDescriptionDefault
max_resultsNoMaximum number of URLs to extract and return in the catalog.
sitemap_xmlYesXML string of the sitemap or sitemapindex file to inspect and parse.
filter_criteriaNoURL retention filter: all entries, recently modified lastmod only, or HTML pages only.

Output Schema

NameRequiredDescription
sub_sitemapsYesNested child sitemap URLs detected if document is a sitemapindex file.
sitemap_entriesYesList of structured URL entries containing loc, lastmod, and priority.
total_urls_foundYesTotal valid loc URLs parsed from the XML sitemap document.

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnly/idempotent/non-destructive annotations, it discloses payload cap (32 KB), rate limit (60 RPM), statelessness, demo-mode and L402 payment requirement (15 sats), and the 400 error on invalid input — none of which the annotations carry.

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?

Two sentences, front-loaded with purpose before routing guidance, and the operational facts are packed into a compact clause. Dense but essentially waste-free; only the parenthetical enumeration of limits feels slightly crammed.

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?

With a 100%-covered schema, an output schema handling return values, and annotations covering the safety profile, the description still supplies limits, auth options, and failure mode. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds a real detail the schema lacks — that filter_criteria defaults to 'all_entries' — and names sitemap_xml as the accepted input. It does not, however, explain max_results semantics beyond the schema's own text.

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 ('Parses XML sitemaps and sitemap index files into structured URL trees') plus the filter dimension, and explicitly distinguishes itself from extract_page_hyperlinks. An agent can route between the two without opening either 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?

Gives concrete when-to-use scenarios (discovering domain architectures, mapping crawl frontiers, indexing blog/product catalogues) and names the alternative for the adjacent case, plus the condition that selects it ('raw HTML').

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

detect_paywall_and_bypassDOM Paywall, Modal Gate & Blurred Content Recovery AuditorA
Read-onlyIdempotent

Audits web page DOM hierarchies to detect soft paywalls, blur overlays, modal gates, and recovers concealed body text. Use when diagnosing paywall obstructions, diagnosing subscriber gating scripts, or auditing content access barriers; for assessing general SEO hygiene, use evaluate_seo_diagnostics instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'html_content' ('detection_profile' defaults to 'heuristic_dom_overlay'), supports '?demo=true' or L402 (15 sats), and returns HTTP 400 if invalid.

NameRequiredDescriptionDefault
html_contentYesTarget web page HTML markup suspected of containing soft paywalls or paywall modals.
target_domainNoOptional publishing domain name to look up publisher gating patterns.
detection_profileNoPaywall detection heuristic: heuristic DOM overlay, hidden text recovery, or strict access barrier audit.

Output Schema

NameRequiredDescription
paywall_typeYesClassification of paywall barrier (e.g., soft_modal_overlay, blurred_content, hard_truncation).
confidence_scoreYesConfidence metric between 0.0 and 1.0 regarding paywall detection.
paywall_detectedYesTrue if paywall scripts, blur filters, or gate overlays were identified.
recovered_contentYesRecovered readable prose extracted from under DOM overlay or script tags.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnly/idempotent/non-destructive/openWorld=false; the description goes well beyond them by disclosing statelessness, the 32 KB payload cap, the 60 RPM rate limit, the demo mode and L402 pricing (15 sats), and the HTTP 400 failure mode for invalid input. Those are operational constraints an agent cannot infer from any structured field.

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?

Purpose and the sibling alternative are front-loaded, then operational facts are packed into a single dense sentence. Nothing is redundant, but the rate-limit/payment/error clause is compressed into a run-on that costs some scanability.

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 return shape need not be explained, and the description still covers the inputs, the default profile, the size and rate ceilings, the payment path, and the failure status. For a read-only three-parameter auditor, an agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds a default the schema omits ('detection_profile' defaults to 'heuristic_dom_overlay') and reiterates the html_content input and demo flag. It does not explain target_domain's publisher-pattern lookup, leaving one property to the schema alone.

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 — audit DOM hierarchies for soft paywalls, blur overlays, modal gates, plus concealed body text recovery. The title's phrasing is echoed but the description adds concrete detection targets (blur overlays, modal gates) rather than restating the name, and it distinguishes the tool from evaluate_seo_diagnostics by naming that sibling explicitly.

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 both when-to-use (diagnosing paywall obstructions, subscriber gating scripts, content access barriers) and when-not-to-use with the exact alternative: 'for assessing general SEO hygiene, use evaluate_seo_diagnostics instead.' That is an explicit routing rule an agent can act on without reading either schema.

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

evaluate_seo_diagnosticsWeb SEO Diagnostics & Heading Hierarchy AuditorA
Read-onlyIdempotent

Audits HTML heading structures, title lengths, meta descriptions, image alt tags, and OpenGraph compliance into a health score. Use when auditing landing pages, verifying SEO compliance before publishing, or evaluating crawl friendliness; for extracting article bodies, use scrape_readable_article instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'html_content' ('audit_level' defaults to 'comprehensive_audit'), supports '?demo=true' or L402 (10 sats), and returns HTTP 400 if invalid.

NameRequiredDescriptionDefault
audit_levelNoDiagnostic audit scope: comprehensive audit, meta tags only, or heading hierarchy only.
html_contentYesWeb page HTML string to evaluate against search engine optimization standards.
target_keywordNoPrimary search keyword to check for in titles, headings, and meta tags.

Output Schema

NameRequiredDescription
seo_scoreYesAggregate SEO compliance score on a 0 to 100 benchmark scale.
recommendationsYesActionable recommendations for resolving detected search optimization issues.
heading_structureYesSummary counts of H1 through H6 headings and hierarchy validity.
missing_attributesYesList of missing SEO elements such as missing alt text or missing meta tags.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantial non-obvious behavior: statelessness, a 32 KB payload cap, 60 RPM throughput, a demo bypass, an L402 payment of 10 sats, and HTTP 400 on invalid input. The only shortfall is that it doesn't say what happens at the rate limit (429 vs queue) or whether the sats charge applies per call.

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?

Front-loaded with purpose, then usage, then operational constraints in a tight single paragraph. The third sentence packs several unrelated facts (size cap, rate limit, demo, L402, error code) into one clause chain, which is dense but every element is relevant to calling the tool correctly.

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?

With an output schema present, the description needn't explain return values, and it covers the remaining gaps an agent needs: auth/payment path, size and rate limits, failure mode, and the default audit scope. Complete for a single-required-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by disclosing 'audit_level' defaults to 'comprehensive_audit' and implicitly scoping 'html_content' to a raw HTML string. It never mentions 'target_keyword', leaving that parameter entirely to the schema.

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 ('Audits') plus the exact resources checked (heading structures, title lengths, meta descriptions, alt tags, OpenGraph) and the output artifact (health score). It also names the sibling it is not (scrape_readable_article), so an agent can discriminate without opening either 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 enumerates three triggering scenarios (auditing landing pages, pre-publish SEO compliance, crawl friendliness) and names the alternative tool with the condition that selects it ('for extracting article bodies, use scrape_readable_article instead'). Nothing is left to inference.

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

extract_clean_markdownWeb HTML to Clean LLM-Optimized Markdown EngineA
Read-onlyIdempotent

Converts raw HTML pages into clean, boilerplate-free, LLM-optimized Markdown with preserved hyperlinks and headings. Use when ingesting raw web documents or blog posts into agent context windows; for isolating tabular data into structured datasets, use parse_html_tables instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'html_content' ('conversion_mode' defaults to 'clean_semantic_article'), supports '?demo=true' or L402 (10 sats), and returns HTTP 400 if invalid.

NameRequiredDescriptionDefault
html_contentYesRaw HTML string of the web page or document to convert to clean Markdown.
preserve_linksNoWhether to retain anchor hyperlinks and image markdown references in output.
conversion_modeNoMarkdown extraction strategy: clean semantic article, preserve tables/code, or minimal text.

Output Schema

NameRequiredDescription
titleYesDocument title extracted from H1 or title tag.
markdownYesClean, sanitized LLM-ready markdown document.
word_countYesNet word count of extracted readable prose.
links_extracted_countYesTotal hyperlinks preserved in document.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare read-only/idempotent/non-destructive, but the description adds material context the annotations cannot: statelessness, a 32 KB input ceiling, 60 RPM throttling, access via '?demo=true' or L402 payment of 10 sats, and an HTTP 400 failure mode for invalid input. Those are exactly the operational constraints an agent needs before calling a rate-limited, paywalled edge endpoint.

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 sentences, front-loaded with purpose then routing, with zero filler. The final sentence is a dense run-on of parentheticals (size cap, rate limit, payment, defaults, error code) that would scan better as a short list, which keeps it from a 5.

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 return-shape explanation is unnecessary, and the annotations cover the safety profile. The description fills the remaining gaps an agent would care about: input limits, throttling, auth/payment paths, and failure behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/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 description goes slightly beyond by disclosing the default value of 'conversion_mode' ('clean_semantic_article'), which the schema does not declare. It does not otherwise explain the tradeoffs among the three enum modes, so it stops short of a 5.

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 ('Converts raw HTML pages into clean, boilerplate-free, LLM-optimized Markdown') and names the exact output characteristics ('preserved hyperlinks and headings'). It also explicitly distinguishes itself from the sibling parse_html_tables, so an agent can route without opening either 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?

Gives an explicit use condition ('Use when ingesting raw web documents or blog posts into agent context windows') and an explicit alternative with its own condition ('for isolating tabular data into structured datasets, use parse_html_tables instead'). The when-to-use and the sibling exclusion are both present.

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

extract_contact_infoLead Contact, Email, Phone & Social Handle ExtractorA
Read-onlyIdempotent

Extracts email addresses, telephone numbers, physical addresses, and social network handles from web text and DOM footers. Use when researching sales leads, aggregating business contact directories, or extracting customer service info; for parsing structured tabular data, use parse_html_tables instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'content' ('extraction_focus' defaults to 'all_contacts'), supports '?demo=true' or L402 (10 sats), and returns HTTP 400 if invalid.

NameRequiredDescriptionDefault
contentYesRaw text or HTML page content to scan for contact channels and lead info.
country_hintNoTwo-letter ISO country code for telephone numbering format hints.
extraction_focusNoContact filter focus: all contact info, emails and phones only, or social handles only.

Output Schema

NameRequiredDescription
emailsYesDeduplicated valid email addresses extracted from page content.
phone_numbersYesStandardized telephone numbers discovered in international or national format.
social_profilesYesIdentified social profiles (Twitter/X, GitHub, LinkedIn, Discord, Telegram).
physical_addressesYesPostal addresses or physical headquarters locations identified.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds non-obvious operational facts: statelessness, a 32 KB payload cap, 60 RPM throttling, demo mode or L402 payment at 10 sats, and HTTP 400 on invalid input. These are runtime constraints an agent could not infer from the schema or annotations, which is exactly what this dimension rewards.

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?

Purpose is front-loaded in the first sentence, followed by usage then runtime constraints, with no filler. The final sentence packs size, rate, auth, default, and error details into one dense parenthetical, which is efficient but slightly hard to parse in a single read.

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 return values need no explanation, and the description covers the remaining gaps an agent needs: statelessness, input size, throughput, payment/auth path, and failure code. Nothing material for a correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds the non-defaulted value that extraction_focus defaults to 'all_contacts' – information the schema itself does not state. country_hint is left entirely to the schema, keeping it below a 5.

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 concrete verb plus four specific resource types (emails, phones, physical addresses, social handles) and the source scope (web text and DOM footers). It explicitly contrasts with parse_html_tables, so the agent can separate it from the closest sibling without reading either 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?

Gives three positive use cases (sales lead research, business contact directories, customer service info) and an explicit exclusion routing structured tabular input to parse_html_tables. The when/when-not pair is fully resolved.

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

extract_structured_metadataOpenGraph, Twitter Cards & JSON-LD Microdata ExtractorA
Read-onlyIdempotent

Extracts OpenGraph tags, Twitter Card metadata, canonical URLs, and Schema.org JSON-LD microdata scripts from HTML. Use when indexing social share cards, author identity, breadcrumbs, and rich snippet schemas for AI search agents; for scanning page hyperlinks and outbound references, use extract_page_hyperlinks instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'html_content' ('metadata_targets' defaults to 'all_protocols'), supports '?demo=true' or L402 (10 sats), and returns HTTP 400 if invalid.

NameRequiredDescriptionDefault
html_contentYesSource HTML string containing head tags, OpenGraph meta properties, or JSON-LD scripts.
include_faviconsNoWhether to extract favicon links and Apple Touch icon references.
metadata_targetsNoTarget metadata protocol filter: all protocols, OpenGraph and Twitter, or Schema.org JSON-LD.

Output Schema

NameRequiredDescription
open_graphYesStructured OpenGraph properties including og:title, og:image, and og:description.
twitter_cardYesTwitter Card metadata including twitter:card, twitter:creator, and twitter:image.
canonical_urlYesCanonical canonical link target or empty string if unspecified.
json_ld_schemasYesParsed Schema.org JSON-LD structured data objects.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/non-destructive, but the description adds genuinely new operational context: stateless edge call, 32 KB payload cap, 60 RPM rate limit, and auth via '?demo=true' or L402 (10 sats). HTTP 400 error behavior is also disclosed. It stops short of describing the return payload shape, but with an output schema present that is acceptable.

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 front-loaded sentences, no filler, with purpose first and the routing alternative immediately after. The final sentence is dense with limits, defaults, and pricing, but every clause carries information an agent needs.

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?

For a read-only extraction tool with an output schema, the description supplies everything else that matters: size limit, rate limit, auth/payment path, invalid-input behavior, and parameter default. No operational gap remains for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds value the schema does not: it states that 'metadata_targets' defaults to 'all_protocols', which is not encoded as a default in the schema. It does not explain include_favicons, but that parameter is fully documented in the schema.

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 enumerates the exact resources extracted (OpenGraph, Twitter Cards, canonical URLs, JSON-LD), and explicitly names the sibling extract_page_hyperlinks as the different tool. An agent can distinguish this from extract_structured_json_entities or extract_page_hyperlinks 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use triggers (social share cards, author identity, breadcrumbs, rich snippets) plus an explicit when-not with the alternative tool named ('for scanning page hyperlinks ... use extract_page_hyperlinks instead'). Routing is unambiguous.

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

isolate_css_selectorsDeterministic Edge DOM CSS Selector Scraper & IsolatorA
Read-onlyIdempotent

Evaluates CSS selector queries against HTML DOM trees to extract targeted inner text, outer HTML, or element attributes. Use when targeting specific elements like pricing badges, product titles, review cards, or navigation breadcrumbs; for parsing unstructured contact information, use extract_contact_info instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'html_content' and 'selector_query' ('extraction_mode' defaults to 'inner_text'), supports '?demo=true' or L402 (10 sats), and returns HTTP 400 if invalid.

NameRequiredDescriptionDefault
html_contentYesHTML source markup to query against using CSS selector matching rules.
selector_queryYesCSS selector query expression (e.g., '.pricing-card', '#main h2', 'article p').
extraction_modeNoDOM extraction representation: text content, outer HTML snippet, or attribute key-value map.

Output Schema

NameRequiredDescription
elementsYesExtracted textual or markup contents of matched DOM elements.
matched_countYesNumber of DOM nodes matching the provided CSS selector query.
selector_usedYesNormalized CSS selector executed during edge DOM traversal.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely new operational context: statelessness, the 32 KB input ceiling, 60 RPM rate limit, the ?demo=true bypass or L402 pricing at 10 sats, and the HTTP 400 failure mode. That is exactly the kind of behavioral detail structured fields do not carry.

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?

Two sentences that front-load the purpose then pack constraints into a compact clause list. The second sentence is dense and semi-colon heavy, but nearly every fragment (limits, auth, error) 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?

With an output schema present, return values need no explanation; the description still covers input limits, rate limits, payment/auth paths, and error behavior, which is everything an agent needs to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds the non-obvious fact that extraction_mode defaults to inner_text, which the schema does not state. Required inputs are also named, giving more than the schema alone.

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?

Opens with a specific verb+resource ('Evaluates CSS selector queries against HTML DOM trees') and enumerates the three output representations. It distinguishes itself from the closest sibling by naming extract_contact_info as the tool for unstructured contact parsing.

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?

Gives concrete positive triggers ('pricing badges, product titles, review cards, navigation breadcrumbs') and one explicit exclusion routing to extract_contact_info. It does not mention adjacent siblings like parse_html_tables or extract_page_hyperlinks, but the core when-to-use guidance is clear.

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

parse_html_tablesHTML Table to Structured JSON & Markdown ParserA
Read-onlyIdempotent

Detects and parses HTML table elements into structured JSON record arrays and GitHub-Flavored Markdown tabular grids. Use when converting financial statements, product comparison grids, or sports statistics into structured data tables; for extracting raw clean markdown prose, use extract_clean_markdown instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'html_content' ('output_format' defaults to 'markdown_and_json'), supports '?demo=true' or L402 (10 sats), and returns HTTP 400 if invalid.

NameRequiredDescriptionDefault
min_rowsNoMinimum rows required for a table to be parsed and retained.
html_contentYesRaw HTML string containing one or more table, thead, tbody, or tr elements.
output_formatNoTabular export formatting standard: markdown and JSON, JSON records only, or CSV string.

Output Schema

NameRequiredDescription
tables_foundYesCount of valid HTML tables detected and transformed.
markdown_tablesYesList of GitHub-Flavored Markdown formatted table strings.
structured_recordsYesParsed array of row objects keyed by header column titles.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive/closed-world, and the description layers genuinely new operational context on top: stateless edge call, 32 KB payload cap, 60 RPM rate limit, L402 payment of 10 sats, ?demo=true, and HTTP 400 on invalid input. It stops short of describing how tables that fail min_rows are reported, but the constraint disclosure is well above the annotation baseline.

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?

Two dense sentences, front-loaded with the core action before use cases and operational limits. The second sentence stacks several facts (size, rate, formats, payment, error code) and reads a bit like a spec dump, but nothing is filler.

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?

For a stateless parser with a full schema and an output schema, everything an agent needs is present: input format expectations, output representations, size and rate ceilings, auth options, and failure behavior. Return-value details are correctly delegated to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description still adds value by documenting the output_format default ('markdown_and_json'), which the schema does not state, and by naming html_content explicitly. min_rows is left to the schema, which is acceptable given full coverage.

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 ('detects and parses HTML table elements') plus the two output representations (JSON record arrays and GFM markdown grids). It names a sibling it is not, extract_clean_markdown, so an agent can route without opening either 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?

Gives concrete positive cases (financial statements, product comparison grids, sports statistics) and an explicit negative case with the alternative tool named ('for extracting raw clean markdown prose, use extract_clean_markdown instead'). The when/when-not pair is fully specified.

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

sanitize_html_contentEdge HTML Sanitizer, Script Stripper & XSS NeutralizerA
Read-onlyIdempotent

Sanitizes raw HTML by removing malicious script tags, iframes, inline event handlers, and data URIs into safe markup. Use when preparing untrusted third-party web content for rendering in agent dashboards or email clients; for converting clean HTML into markdown, use extract_clean_markdown instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'html_content' ('sanitization_strictness' defaults to 'strip_scripts_and_iframes'), supports '?demo=true' or L402 (10 sats), and returns HTTP 400 if invalid.

NameRequiredDescriptionDefault
html_contentYesUntrusted or potentially hazardous HTML string requiring sanitization.
preserve_imagesNoWhether to retain safe img elements with http/https sources.
sanitization_strictnessNoSanitizer filter policy: strip scripts and iframes, allowlist safe formatting, or plaintext strip all.

Output Schema

NameRequiredDescription
sanitized_htmlYesSafe, purified HTML output free of active scripting threats.
elements_removedYesList of dangerous tags and attributes removed during processing.
xss_vectors_neutralizedYesCount of potential script execution vectors disarmed.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already carry readOnly/idempotent/non-destructive, but the description adds operational facts annotations cannot: 32 KB payload cap, 60 RPM rate limit, stateless edge execution, default strictness, demo/L402 payment at 10 sats, and HTTP 400 on invalid input. Size limits, rate limits, and payment requirements are exactly the pre-call knowledge an agent needs.

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 sentences with the purpose front-loaded ahead of routing and operational detail — correct ordering. The final sentence is dense, packing size, rate, defaults, demo mode, L402 pricing, and error behavior into one clause-heavy run, which slightly hurts scanability.

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 return-value documentation is not required, and annotations cover the safety profile. Remaining agent-critical gaps — payload cap, rate limit, default policy, cost, and failure mode — are all addressed, so nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3; the description goes slightly beyond by declaring the default value for 'sanitization_strictness' ('strip_scripts_and_iframes'), which the schema does not state. It does not add semantics for 'preserve_images', leaving that entirely to the schema.

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?

Opens with a specific verb+resource ('Sanitizes raw HTML') and enumerates exactly what is removed (script tags, iframes, inline event handlers, data URIs), so the agent knows the transformation precisely. It also names the sibling it is not (extract_clean_markdown), separating the two without requiring schema inspection.

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?

States the triggering condition explicitly ('preparing untrusted third-party web content for rendering in agent dashboards or email clients') and names the alternative with the condition that selects it ('for converting clean HTML into markdown, use extract_clean_markdown instead'). Both the when and the when-not are present.

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

scrape_readable_articleReadability Article Body & Byline ExtractorA
Read-onlyIdempotent

Extracts primary article body, author bylines, publication timestamps, and estimated reading duration from web pages. Use when stripping navigation bars, advertisement containers, and cookie banners to isolate core editorial content; for converting full HTML to markdown, use extract_clean_markdown instead. Stateless read-only edge call (max 32 KB, 60 RPM): accepts 'html_content' ('readability_profile' defaults to 'article_body_strict'), supports '?demo=true' or L402 (10 sats), and returns HTTP 400 if invalid.

NameRequiredDescriptionDefault
html_contentYesTarget web page HTML containing the article, editorial post, or blog content.
include_bylineNoWhether to parse author names, affiliations, and editorial publication dates.
readability_profileNoContent isolation heuristic: strict article body, technical documentation, or forum thread.

Output Schema

NameRequiredDescription
titleYesExtracted main article headline.
bylineYesAuthor credit or publishing editorial team.
excerptYesShort leading synopsis or meta description.
content_textYesSanitized primary article narrative text.
reading_time_minutesYesEstimated reading duration in minutes based on 220 WPM.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds genuinely new operational context: statelessness, a 32 KB payload cap, 60 RPM rate limit, demo-mode or L402 payment at 10 sats, and HTTP 400 on invalid input. Those are exactly the facts an agent needs before calling an edge endpoint.

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?

Purpose and the sibling alternative are front-loaded, and every clause carries information. The final sentence is densely parenthetical (limits, auth, defaults, error code all crammed together), which slightly hurts scannability.

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?

With an output schema present, return values need no explanation; the description instead covers the constraints that matter — size cap, rate limit, auth/payment paths, failure mode, and the sibling escape hatch. Nothing needed for a correct call is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns above that by disclosing the default value of 'readability_profile' ('article_body_strict'), which the schema does not state. It does not explain include_byline's default, so it stops short of 5.

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?

The opening sentence gives a specific verb (extracts) and names the exact resources returned: article body, bylines, timestamps, reading duration. It also distinguishes itself from the sibling extract_clean_markdown, so an agent can route correctly without opening either 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?

It states the use case ('stripping navigation bars, advertisement containers, and cookie banners to isolate core editorial content') and names the explicit alternative with its selection condition ('for converting full HTML to markdown, use extract_clean_markdown instead'). Both when-to-use and when-not-to-use are present.

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.

  1. 12 tool updatesv1.0.0
    • First observedcompile_rss_feed
    • First observedcrawl_sitemap_urls
    • First observeddetect_paywall_and_bypass
    • First observedevaluate_seo_diagnostics
    • First observedextract_clean_markdown
    • First observedextract_contact_info
    • First observedextract_page_hyperlinks
    • First observedextract_structured_metadata
    • First observedisolate_css_selectors
    • First observedparse_html_tables
    • First observedsanitize_html_content
    • First observedscrape_readable_article

TDQS

A4.6/5.0

Scored across 12 tools

Disambiguation4/5

Most tools target distinct extraction facets, and descriptions explicitly cross-reference alternatives such as extract_clean_markdown vs scrape_readable_article and extract_structured_metadata vs evaluate_seo_diagnostics. Some overlap remains between readable-article extraction, markdown conversion, paywall recovery, and CSS-selector extraction, but the boundaries are mostly clear.

Naming Consistency5/5

All tool names use consistent snake_case verb_noun-style patterns with clear action verbs such as extract, scrape, parse, isolate, detect, crawl, sanitize, evaluate, and compile. The convention is predictable throughout.

Tool Count5/5

Twelve tools is well within a reasonable range for a web extraction and readability engine, and each tool corresponds to a recognizable operation rather than redundant variants. The surface feels deliberately scoped rather than bloated.

Completeness4/5

The set covers a broad extraction surface: markdown conversion, article extraction, metadata, tables, CSS selectors, links, sitemaps, sanitization, contact info, SEO diagnostics, and feed generation. A notable gap is the lack of a URL fetch/render or multi-page crawl tool, since most tools require raw HTML as input.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to read web pages reliably, returning clean markdown content, hyperlinks, and metadata without navigation or ad noise.
    3
    12 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to fetch one or many web pages concurrently and receive clean, LLM-ready Markdown with navigation, ads and boilerplate stripped away, plus extracted metadata such as title, description, author, Open Graph tags and canonical URL. It runs locally over stdio with no API key or account, requiring only a single command.
    3
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to read any web page — including pages behind a signed-in session, localhost, and JavaScript-heavy sites — as clean, focus-ranked, token-budgeted markdown using a real browser running locally, with no cloud relay or API key. Also supports structured extraction, link listing, screenshots, and policy-gated interaction.
    68 npm
    1
    MIT