Standalone Corsen Context example for Astro. Exposes four read-only tools over MCP and WebMCP for site content retrieval without scraping.
Four tools with basic descriptions and partial schemas. All tools have verb-noun naming (search_site, get_page_content, get_sitemap, list_content) which is correct. Descriptions are present but brief (10-50 chars), below the 50-200 char baseline for LLM-optimized docs. Input schemas visible for 3 tools with type and description; get_sitemap has empty input object. No output schemas documented. No error handling guidance, no parameter constraints (enums, ranges), no idempotency markers. Tools are read-only (good security posture) but lack composition hints and chaining IDs. Definitions are minimal but functional, typical of a demo/example server rather than production-grade.
Retrieve clean content from a page as Markdown
Retrieve the bounded public URL map
Browse public records and pages
Find the relevant URL by searching site content
Output schemas not documented. LLMs cannot plan downstream calls or extract fields without knowing what search_site, get_page_content, get_sitemap, and list_content return.
Descriptions are too brief (10-50 chars). Baseline for LLM-optimized descriptions is 50-200 chars. Current descriptions lack context on WHEN to use each tool and what it returns. E.g., 'Find the relevant URL by searching site content' does not explain whether it searches titles, body, or both, or what fields are in the result.
get_sitemap has empty input schema (no parameters). Schema score is 20 because the input object is present but contains no type or description fields. This is technically valid but provides no validation or documentation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
No error handling guidance. Tools do not document what happens on failure (e.g., invalid URI, search timeout, missing content type). LLMs have no recovery path.
Parameter 'limit' in search_site lacks range constraints. No min/max documented. LLMs may pass absurd values (0, 999999) without guidance.