MCP server for AI content validation — multi-dimensional quality checks for LLM output
Mixed quality across 9 tools. validate_content has excellent documentation (detailed wire contract, halt semantics, domain enum); scrub_pii and lens_health are minimal. Validator tier tools (lens_catches_*, lens_consistency_*) lack input validation guidance and output schema documentation. All tools have descriptions, but 5 of 9 are under 100 chars (below baseline 194). No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles. Parameter schemas present but sparse, most lack format/constraint guidance. Error handling is generic (jsonError helper) with no recovery guidance.
Validator tier tool: shells out to local `lens-kit` CLI. Add catches to institutional defect memory. Takes LOCAL FILE PATHS.
Validator tier tool: shells out to local `lens-kit` CLI. Deterministic cross-file checks for relevant catches. Takes LOCAL FILE PATHS.
Validator tier tool: shells out to local `lens-kit` CLI. Get statistics on institutional defect memory. Takes LOCAL FILE PATHS.
Validator tier tool: shells out to local `lens-kit` CLI. Deterministic cross-file consistency checks for information leaks. Takes LOCAL FILE PATHS.
Validator tier tool: shells out to local `lens-kit` CLI. Deterministic cross-file consistency checks for marker consistency. Takes LOCAL FILE PATHS.
Validator tier tool: shells out to local `lens-kit` CLI. Deterministic cross-file consistency checks for numeric consistency. Takes LOCAL FILE PATHS.
Validator tier tools (lens_catches_*, lens_consistency_*) lack output schema documentation. LLMs cannot plan downstream actions or extract structured results.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk profiles. lens_catches_add is WRITE; others are READ_ONLY. Agents cannot reason about side effects.
Validator tier descriptions are generic ('Validator tier tool: shells out to local `lens-kit` CLI'). LLMs cannot distinguish when to call lens_catches_relevant vs lens_consistency_leaks vs lens_consistency_numbers.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Check if Lens API service is running. Returns service status and version information.
PII-only pattern scan (no LLM). Fast, deterministic detection of personally identifiable information in text.
Run the 10-lens validation gate on AI-generated content. Returns pass/fail, per-lens results, violation details, and a deterministic 0-10 score derived from violation counts (10 = clean, floors at 0; computed by the API tier layer, not by the LLM — the LLM-emitted 0-100 score was removed 2026-07-30). Requires SOULFIELD_API_KEY. Supports domains: general, finance, marketing, legal, seo, agency. WIRE CONTRACT (since 2026-08-10): each lens carries status (ran|skipped|error) and passed is null whenever no verdict was produced — parse passed===false as the violation signal, never !passed. HALT SEMANTICS: Rights runs first and halts the run on a critical violation; in a halted response downstream judged lenses read passed:null/status:skipped (unknown, not clean — consciousScan is non-blocking and keeps passed:true, its status:skipped is the never-ran signal).
Error handling is generic (jsonError returns only error.message). No recovery guidance, categorization (retryable vs fatal), or actionable hints for LLM self-correction.
scrub_pii and lens_health descriptions are under 50 chars (baseline 194). Insufficient context for LLM tool selection.