The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Wsc listing page.
A prose linter and AI-slop detector. WSC finds AI tells — words, phrases, and sentence structures overrepresented in AI-generated text, each flag backed by a published corpus study. It also catches classic writing issues: weasel words, passive voice, duplicate words, long sentences, nominalizations, hedging, and filler adverbs. Available as a web editor, HTTP API, MCP server, CLI, and GitHub Action.

wsc-mcp on npmwsc-lint::warning annotations.wscrc.json filesWSC flags patterns that research on AI-generated text finds overrepresented, and cites a source for every flag. It does not, and cannot, prove authorship. Classifier-based detectors carry a documented false-accusation risk: a Stanford study found that seven of them misflagged 61% of essays written by non-native English speakers. WSC avoids that trap by design — every flag is a specific, explainable edit that improves the text no matter who, or what, wrote it.
| Detector | Items | Description |
|---|---|---|
| Weasel Words | 95 words/phrases | Vague terms like "very", "basically", "arguably", "numerous" |
| Passive Voice | 260 irregular verbs | Auxiliary verbs + past participles (regular -ed + irregular) |
| Duplicate Words | — | Adjacent repeated words across whitespace, case-insensitive |
| Long Sentences | threshold: 30 words | Sentences exceeding a configurable word count |
| Nominalizations | 245 word pairs | Nouns replaceable with verbs ("utilization" → "use") |
| Hedging | 100 phrases | Phrases that weaken assertions ("I think", "it seems") |
| Filler Adverbs | 139 words | Adverbs adding emphasis without substance ("totally", "utterly") |
| AI Tells | 98 words (+111 inflected forms) + 83 phrases + 12 structural patterns | Words, phrases, and sentence constructions overrepresented in AI-generated text (delve, rich tapestry, It's not just X — it's Y) |
Word lists sourced from Matt Might's shell scripts and expanded with additional entries. AI tells draw on published corpus studies: Kobak et al. 2025 (Science Advances), Juzek & Ward 2025 (COLING), Liang et al. 2024 (Stanford), and Reinhart et al. 2025 (PNAS). Wikipedia's editor-maintained Signs of AI writing catalogue and AI-detection vendor reports round out the sources.
Create a .wscrc.json to customize detectors. All tools (API, MCP, CLI) support it.
Every field is optional. Missing fields use defaults. JSON Schema provides autocompletion in VS Code.
POST /api/checkAnalyze text for writing style issues. Accepts optional config object.
Response:
With config:
GET /api/checkReturns API documentation as JSON.
GET /api/detectorsReturns the list of all 8 detectors with descriptions, configurability, and word counts.
GET /healthRuns a smoke test with known text and returns {"status":"healthy"} or 503.
Limits: Max 100,000 characters per request. CORS enabled for all origins.
The Writing Style Checker is available as an MCP server, letting AI assistants check your writing directly.
| Tool | Description |
|---|---|
check_text | Analyze text for all 8 writing style issues. Accepts optional config. |
fix_duplicates | Remove duplicate adjacent words and return cleaned text |
list_word_lists | Return info about all detector word lists |
check_file | (Local only) Read a file from disk and analyze it. Auto-discovers .wscrc.json. |
Connect any MCP client to the hosted server - no installation required.
Install via npm for local usage. Includes check_file for analyzing files on disk with auto-discovery of .wscrc.json.
Claude Desktop / Claude Code config:
See the wsc-mcp npm page for full documentation.
Check files from the command line.
See the wsc-lint README for full documentation.
| Input | Default | Description |
|---|---|---|
files | **/*.md | Glob pattern for files to check |
config | — | Path to .wscrc.json config file |
max-warnings | unlimited | Max warnings before failing |
only-changed | false | Only check files changed in this PR |
The web editor runs in your browser - we never send text to any server. The API and MCP endpoints only process text you explicitly send to them.
Visit http://localhost:5173. The API is at /api/check, MCP at /mcp, health at /health.
| Command | Description |
|---|---|
npm run dev | Start dev server |
npm run build | Build for production |
npm run check | Type check with svelte-check |
npm test | Run all 341 tests |
npm run test:coverage | Coverage report |
Deployed as a Cloudflare Worker at wsc.theserverless.dev.
See CONTRIBUTING.md for development setup, testing, and pull request guidelines.
For substantial changes, please open an issue first.