Web Intelligence MCP Server — scrape, search, extract, and monitor web content for AI agents
WebIntel MCP provides 8 web-focused tools with consistent naming (verb_noun pattern: scrape_page, extract_metadata, monitor_page) and reasonable descriptions (avg ~120 chars). However, input schemas are minimal, most tools accept only 1-2 string parameters with no enum constraints, range limits, or validation guidance. Output schemas are entirely undocumented; LLMs cannot predict what fields to expect from responses. Error handling is absent from descriptions. Parameter descriptions are present but generic ('The URL of the page to scrape'). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being read-only. Batch_scrape mentions a 20-URL limit but does not enforce it in the visible schema. Overall: functional but minimal, typical of a beta-stage tool server.
Scrape multiple web pages concurrently. Pro tier feature. Maximum 20 URLs per call (self-hosted: unlimited).
Extract contact information from a web page. Finds email addresses, phone numbers, and social media profiles present on the page.
Extract all links from a web page, categorized by type. Returns internal links, external links, social media profiles, and email links found on the page.
Extract SEO and social media metadata from a web page. Returns page title, meta description, Open Graph tags, Twitter Card tags, canonical URL, and language.
Extract structured data from a web page. Extracts JSON-LD structured data, HTML tables, and optionally content matching a CSS selector.
Monitor a web page for content changes. Returns a content hash and timestamp. Call this tool periodically with the same URL to detect changes by comparing hashes.
Output schemas completely undocumented. LLMs cannot predict response structure (fields, types, pagination). Forces agents to guess what data is available and how to chain tools.
Input schemas lack constraints. web_search accepts num_results as integer with no min/max (description says 'default: 5, max: 10' but schema does not enforce). batch_scrape mentions 20-URL limit in description only, not in schema. No enums, patterns, or validation rules.
No tool annotations despite all 8 tools being read-only. Missing readOnlyHint in schema. Agents cannot distinguish safe tools from destructive ones without reading descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Extract clean, readable content from any web page. Strips ads, navigation, footers, and other noise. Returns the main text content, page title, and metadata.
Search the web and return results with titles, URLs, and snippets. Uses DuckDuckGo HTML endpoint (no API key required).
No error handling guidance in tool descriptions. What happens if a URL is unreachable? If batch_scrape exceeds 20 URLs? If extract_structured finds no matching selector? Descriptions do not explain recovery paths.
Parameter descriptions are generic and lack actionable constraints. 'The URL of the page to scrape' does not explain format (http/https required?), timeout behavior, or what constitutes a valid URL. 'Optional CSS selector' does not explain selector syntax or error behavior if invalid.