A sovereign, local-first MCP server for automated Schema.org JSON-LD generation, GA4 metric validation, llm.txt auditing, and content stickiness analytics.
Server has 7 tools with basic schemas and descriptions, but significant quality gaps limit production readiness. All tools have descriptions (10-100 chars, mostly adequate) and input schemas with typed parameters. However, parameter descriptions are sparse or missing context; output schemas are undocumented; error handling is minimal; and tool naming lacks action verbs. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all being read-only operations. Average tool score: 52/100.
Security Tool: Verifies presence and validity of RFC 9116 /.well-known/security.txt headers.
GA4 Analytics Engine: Computes 'Retention Gold' content metrics by comparing session duration with bounce rate.
AEO Tool: Scrapes direct-answer blocks formatted for Perplexity, SearchGPT, and Google AI Overviews.
Schema Generator: Compiles structured FAQPage JSON-LD schema blocks for voice search.
Schema Generator: Generates multi-entity Schema.org TechArticle JSON-LD markup.
GA4 Guardrail Tool: Validates dimension and metric compatibility for Google Analytics Data API requests.
Tool names lack action verbs. 'generate_tech_article_schema', 'validate_ga4_report_metrics', 'calculate_content_stickiness_score' do not start with clear action verbs (create_, generate_, validate_ are acceptable but inconsistent). LLMs rely on verb-noun naming to infer intent. Rename to: 'create_tech_article_schema', 'validate_ga4_metrics', 'compute_content_stickiness'.
Output schemas are not documented. Tools return JSON strings with internal structure (e.g., 'status', 'json_ld', 'entity_count') but no formal schema definition is visible. LLMs cannot plan downstream calls or extract fields reliably. Add explicit return type documentation to each tool docstring.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
AEO Tool: Audits presence and Markdown syntax structure of /llm.txt for AI search crawlers.
Parameter descriptions lack format/constraint details. 'questions_answers_json' says 'JSON string array' but does not specify required keys ('question', 'answer') or example structure. 'domain_or_url' accepts both but does not clarify which is preferred. Add format constraints and examples to parameter descriptions.
No tool annotations despite all tools being read-only. FastMCP supports readOnlyHint, destructiveHint, and idempotentHint. All 7 tools are safe to retry and do not modify state, annotate with @mcp.tool(readOnlyHint=True) to signal this to agents.
Error handling is minimal. generate_faq_page_schema catches exceptions and returns JSON with 'status: ERROR', but other tools do not validate inputs or provide recovery guidance. validate_ga4_report_metrics does not validate that dimensions/metrics are non-empty. Add input validation and actionable error messages (e.g., 'Invalid JSON in questions_answers_json: expected array of {question, answer} objects').