Professional-grade SEO analysis for AI assistants running on Cloudflare Workers. Provides comprehensive SEO validation including meta tags, structured data, technical SEO, performance metrics, and accessibility audits.
Server demonstrates solid SEO domain expertise with 6 well-focused tools. Tool names follow verb_noun pattern (validate_*, audit, full_seo_audit). Descriptions are domain-appropriate and non-trivial (120-190 chars on average). Input schemas use JSON Schema with proper typing (enums, booleans, strings). However, output schemas are NOT documented in the visible code, responses are formatted via helper functions (formatMetaTagsReport, etc.) but the actual return structure is opaque. Error handling is present via handleToolError but lacks recovery guidance. No tool annotations (readOnlyHint) despite all being READ_ONLY by risk classification. Caching strategy is sound but adds implicit statefulness not exposed to the caller.
Run a comprehensive SEO audit combining meta tags, structured data, technical SEO, performance, and accessibility. Returns prioritized recommendations.
Comprehensive technical SEO audit including robots.txt, sitemap, canonicals, HTTP headers, hreflang, and HTTPS validation.
WCAG 2.1 accessibility audit including semantic HTML, ARIA attributes, heading structure, alt text, form labels, and link text. Accepts either a URL (fetches HTML automatically) or raw HTML content.
Validate and analyze meta tags including title, description, Open Graph, Twitter Cards, and viewport. Provides framework-specific recommendations.
Analyze Core Web Vitals (LCP, INP, CLS, TTFB) using PageSpeed Insights API. Provides optimization recommendations for both mobile and desktop.
Validate JSON-LD and Schema.org structured data for rich snippet eligibility. Checks required properties, data types, and Google Rich Results compatibility.
Output schemas are not documented. All 6 tools format responses via helper functions (formatMetaTagsReport, formatStructuredDataReport, etc.), but the actual return structure (field names, types, nesting) is opaque. LLMs cannot plan downstream tool calls or extract values if they don't know what fields are returned.
Tool annotations missing. All 6 tools are READ_ONLY (verified in source Risk: READ_ONLY), but server.tool() calls do not include readOnlyHint or destructiveHint annotations. Modern MCP spec requires annotations to be explicitly declared in tool registration for agent routing.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 77 | 2026-07-28+ | v2 |
Error handling lacks recovery guidance. handleToolError(error, url) is called but source code not visible, cannot verify error responses include 'what to do next' or error classification (retryable, user-fixable, fatal). Without this, agents cannot self-correct.
Boolean parameters lack explicit defaults. Tools technical_seo_audit and full_seo_audit use boolean flags (checkRobots, checkSitemap, includePerformance, etc.) without documenting default values. Per pattern:default-values, absent defaults invite silent misuse (LLM omits param expecting it to default to 'safe' value, opposite happens).
Mutual exclusivity not formally declared. validate_accessibility accepts both url and html as optional 'if other provided', but JSON Schema does not enforce oneOf/allOf constraint. LLMs may pass both or neither, requiring runtime validation.
Implicit caching adds request-scoped statefulness. All tools call getCachedValidation(kv, url, toolName) and return cached results without declaring cache TTL or invalidation strategy to the client. This violates stateless request handling principle, client cannot know if result is fresh or stale. Cache should be transparent or TTL should be returned in response.