Search stack configurator and MCP proxy for web search, fetch, map, and crawl operations
Thorondor provides 4 well-named web tools with comprehensive parameter schemas and detailed descriptions. All tools follow verb_noun naming (web_search, web_fetch, web_map, web_crawl). Descriptions are substantive (150-250 chars) and explain WHEN to use each tool. Input schemas are complete with types, enums, and descriptions for all parameters. However, output schemas are not documented in the visible code, the response structure is inferred from model_dump() calls but not formally specified for LLM consumption. Error handling is present (CapacityUnavailable, RouteDeadlineExceeded) but error messages lack actionable recovery guidance. No tool annotations (readOnlyHint, destructiveHint) are declared despite all tools being READ_ONLY.
Crawl a small, bounded part of one site and return typed evidence.
Fetch evidence from one to four known URLs. Use this when an agent already knows the target URLs. Each URL returns a typed terminal outcome, retryability, final URL, status, content type, bounded metadata and links, and untrusted provenance. Raw HTML is returned only when explicitly requested. Server-configured shared byte limits, route and stage deadlines, process-wide admission slots, per-host crawl limits, and internal fan-out caps apply.
Discover a bounded, robots-aware URL map for one site.
Search the live web and return source-cited evidence passages. Use for current or external information that requires verification. search_profile selects quick, research, or deep bounded search. decompose controls query expansion. include_raw_markdown adds source Markdown when exact source context is needed.
Output schemas not documented. Response structure inferred from model_dump() but not formally specified for LLM consumption. LLMs cannot plan downstream tool calls without knowing what fields to expect.
Error messages lack actionable recovery guidance. CapacityUnavailable and RouteDeadlineExceeded return structured errors but do not suggest next steps (e.g., 'retry after X seconds' or 'try a simpler query'). Agents cannot self-correct.
Tool annotations missing. All 4 tools are READ_ONLY but do not declare readOnlyHint in their definitions. This prevents clients from optimizing caching and retry logic.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | A | 84 | 2026-07-28+ | v2 |
Parameter descriptions lack format constraints. 'max_urls', 'max_pages', 'max_depth' accept integers but do not specify min/max bounds in descriptions. LLMs may pass absurd values (e.g., max_pages=999999).
web_fetch 'capabilities' and 'structured_formats' parameters lack enum constraints and clear descriptions. LLMs cannot discover valid options without trial-and-error.