SideButton MCP plugin: AI writing-pattern detection and 5-dimension quality scoring.
One tool, check_writing_quality, combines a deterministic pattern checker (no LLM, ~40 pattern families) with LLM scoring on 5 dimensions — Directness, Rhythm, Trust, Authenticity, Density. Pass thresholds are content-type-aware: 35/50 for prose, 28/50 for landing pages (with adjusted Rhythm/Trust/Authenticity rubrics).
git clone --recurse-submodules https://github.com/sidebutton/plugin-writing-quality
sidebutton plugin install ./plugin-writing-qualityLLM scoring (full / score-only modes) needs ANTHROPIC_API_KEY in the SideButton server's environment. patterns-only works without a key.
| Param | Type | Notes |
|---|---|---|
content |
string, required | The text to audit |
context |
string | Brand context: voice rules, audience, constraints |
mode |
full | patterns-only | score-only |
Default full (patterns + LLM scoring) |
ignore |
string[] | Category slugs to suppress (e.g. ["em-dash"]) for intentional brand-voice patterns; reported as a count only |
Output: VERDICT: PASS | REVISE | CLEAN | PATTERNS_FOUND, findings as CATEGORY | location | severity | pattern, severity summary, and (in LLM modes) per-dimension scores with total|N. Dimensions below 5 trigger a revision warning.
Pattern lists and rubrics are distilled from two git submodules, vendored into lib/:
humanizer— 33 AI-writing patterns + detection guidance (what NOT to flag, signs of human writing)stop-slop— banned phrases/structures + the 5-dimension scoring rubric
After bumping a submodule, re-sync the derived lists in lib/pattern-checker.js and the calibration notes in lib/scoring-prompt.js — nothing reads the submodules at runtime.
echo '{"content":"Let'\''s dive in. The data tells us everything.","mode":"patterns-only"}' | node handler.js