MCP server for live web search and clean-markdown page fetch over the Keenable web index. Bridges to the hosted Keenable MCP server.
Two tools with complete input schemas and descriptions, but significant gaps in output documentation and error handling. search_web_pages and fetch_page_content both have clear, actionable descriptions (120-140 chars, within baseline 194 avg) and well-structured input schemas with proper types and enums. However, output schemas are completely undocumented, LLMs cannot plan downstream calls or extract structured data. Parameter descriptions are adequate but lack format constraints (e.g., date format YYYY-MM-DD stated in description but not in schema). No error recovery guidance. Tool naming is clear and verb-forward (search_, fetch_), following conventions. This is a discovery-only bridge server, which limits practical scoring, real execution happens remotely, so output documentation is deferred.
Fetch and extract content from a web page. Returns the page content in markdown format.
Live web search over the Keenable web index. Describe the ideal page, not keywords. Use date/site filters to narrow results.
Output schemas completely undocumented. LLMs cannot infer what fields search_web_pages returns (results array? pagination? snippet format?) or what fetch_page_content yields (markdown structure? metadata?). Forces agents to guess or fail on downstream processing.
No error handling or recovery guidance. If search_web_pages returns 0 results or fetch_page_content hits a 404, the tool provides no actionable next step. LLM cannot self-correct or retry intelligently.
Date parameters (published_after, published_before, acquired_after, acquired_before) lack format validation in schema. Description states YYYY-MM-DD but no pattern constraint or minLength/maxLength. LLMs may pass invalid dates like '2024-1-5' or '01/15/2024'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
fetch_page_content max_chars parameter lacks upper bound constraint. Unbounded integer lets LLMs request gigabytes of content, risking timeouts or memory exhaustion. Should specify max 1000000 or similar.
This is a discovery-only bridge (src/discovery.js) that declares schemas statically but does not execute tools. Real tool calls are forwarded to a remote hosted server. Tool definitions are inferred from static declarations, not from live registration code.