A powerful research / crawl / validation / gathering / analysis / report microservice. Speaks MCP (stdio) and HTTP, and runs the repo's CI pipeline.
Server has 10 tools with basic descriptions and input schemas, but significant quality gaps. Most tool descriptions are adequate (50-150 chars) but lack actionable context for LLM selection. Parameter descriptions exist but are minimal. No output schemas documented. Error handling guidance absent. Tool naming is reasonable (verb_noun pattern) but some tools combine multiple concerns (e.g., generate_research_outputs runs a pipeline AND validates). No tool annotations (readOnlyHint/destructiveHint). Critical issue: cannot verify actual tool registration code in provided source, only server.py header visible, not full implementation. This caps confidence in schema completeness.
Analyzes a given scene/use case and ranks alternatives and solutions from the awesome_list and solution_registry datasets by relevance score
Crawls a website starting from a URL, respecting robots.txt, and returns discovered pages with metadata
Extracts main text content from HTML using trafilatura or BeautifulSoup, removing scripts, styles, and boilerplate
Fetches content from a URL with HTTP/2 support, follows redirects, and returns status, headers, and body
Runs the research output generation pipeline (scripts/generate_research_outputs.py) and validates the generated outputs
Retrieves a named dataset from the frontend/data directory (awesome_list, solution_registry, crawler_discoveries, etc.)
Parses RSS/Atom feeds and extracts entries with title, link, published date, and summary
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., what does analyze_scene return? What fields are in the result?). Violates pattern:tool and pattern:response-shaper.
generate_research_outputs combines two concerns: runs a pipeline AND validates outputs. Should split into separate tools (run_research_pipeline + validate_research_outputs) so agent can compose them independently. Violates pattern:tool (single responsibility).
No error handling guidance. Tools lack recovery hints (e.g., 'If URL fetch fails, try crawl_site instead'). No categorization of errors as retryable vs user-fixable. Violates pattern:recovery-guide and pattern:error-classification.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
Parses HTML and extracts structured metadata: title, description, links, and headings
Searches for URLs matching a pattern in the crawled pages and returns matching results
Validates that required research output files exist and contain expected data (awesome_list, solution_registry, crawler_seed_context, crawler_taxonomy, reports)
Parameter descriptions are minimal (10-30 chars). E.g., 'scene' param in analyze_scene: 'The scene or use case to analyze' lacks guidance on format, length, or examples of valid inputs. Violates pattern:tool-description baseline (72 chars avg).
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot determine which tools are safe to retry or have side effects. generate_research_outputs is destructive (WRITE risk) but unmarked. Violates current spec alignment (tool annotations are current pattern).