Writing Style Checker
MCP serverCloud & infrawsc checks written text for weak wording and machine-sounding patterns. Once added, your AI can review drafts and flag weasel words, passive voice, hedging, and writing habits that research has tied to AI-generated text, so problems get caught before anything is published.
Use Writing Style Checker in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add Writing Style Checker and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use Writing Style Checker to check text
No key or account is asked for. Not verified by us yet: Ahel has not run a call through it.
Details
Available today. Use it from your connected AI after setup.
No key or account is asked for. Not verified by us yet: Ahel has not run a call through it.
After adding wsc, give your AI a piece of writing and ask it to run a check for weak wording and AI-sounding patterns.
What your AI can do with it
- Flag weasel words in a draft
- Point out passive voice
- Catch hedging language
- Spot writing patterns that research links to AI-generated text
- Review text before it goes out
Install Writing Style Checker
The server’s own address, for the clients that take one directly. Or connect Ahel once and every client you use reads it from one address, with the account kept on Ahel rather than in each client’s config.
Claude Code
claude mcp add --transport http --scope user writing-style-checker 'https://wsc.theserverless.dev/mcp'Run it once in your project, then open /mcp to approve any sign-in the server asks for.
Claude Desktop
https://wsc.theserverless.dev/mcpAdd a custom connector in Settings, paste this address, and approve the sign-in.
Cursor
cursor://anysphere.cursor-deeplink/mcp/install?name=writing-style-checker&config=eyJ1cmwiOiJodHRwczovL3dzYy50aGVzZXJ2ZXJsZXNzLmRldi9tY3AifQ==Open the link and Cursor adds the server at that address.
ChatGPT
https://wsc.theserverless.dev/mcpIn Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.
Codex
codex mcp add writing-style-checker --url 'https://wsc.theserverless.dev/mcp'Run it once, then sign in with codex mcp login writing-style-checker if the server asks for an account.
From the project's README
As published by theserverlessdev/wsc in README.md.
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.
Features
- Web Editor - Real-time highlighting with inline fix buttons for all 8 detectors
- HTTP API - POST text with optional config, retrieve structured JSON responses
- MCP Server (Remote) - Connect AI assistants via Streamable HTTP transport
- MCP Server (Local) - Stdio-based server via
wsc-mcpon npm - CLI - Check files from the command line via
wsc-lint - GitHub Action - Run checks in CI with
::warningannotations - Configurable - Customize detectors with
.wscrc.jsonfiles
What WSC is (and isn't)
WSC 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.
Detection Rules
| 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.
Configuration
Create a .wscrc.json to customize detectors. All tools (API, MCP, CLI) support it.
{
"$schema": "https://wsc.theserverless.dev/schema.json",
"detectors": {
"weaselWords": {
"enabled": true,
"add": ["synergy", "leverage"],
"remove": ["very"]
},
"longSentences": { "maxWords": 25 },
"adverbs": { "enabled": false }
}
}
Every field is optional. Missing fields use defaults. JSON Schema provides autocompletion in VS Code.
API Usage
POST /api/check
Analyze text for writing style issues. Accepts optional config object.
curl -X POST https://wsc.theserverless.dev/api/check \
-H "Content-Type: application/json" \
-d '{"text":"The code was written very quickly."}'
Response:
{
"summary": {
"total": 2,
"weaselWords": 1,
"passiveVoice": 1,
"duplicateWords": 0,
"longSentences": 0,
"nominalizations": 0,
"hedging": 0,
"adverbs": 0
},
"issues": {
"weaselWords": [{ "word": "very", "index": 21, "line": 1, "column": 22, "context": "..." }],
"passiveVoice": [{ "phrase": "was written", "index": 9, "line": 1, "column": 10, "context": "..." }],
"duplicateWords": [],
"longSentences": [],
"nominalizations": [],
"hedging": [],
"adverbs": []
},
"meta": { "characterCount": 34, "wordCount": 6, "sentenceCount": 1, "processingTimeMs": 2 }
}
With config:
curl -X POST https://wsc.theserverless.dev/api/check \
-H "Content-Type: application/json" \
-d '{"text":"The code was written very quickly.", "config":{"detectors":{"weaselWords":{"enabled":false}}}}'
GET /api/check
Returns API documentation as JSON.
GET /api/detectors
Returns the list of all 8 detectors with descriptions, configurability, and word counts.
GET /health
Runs a smoke test with known text and returns {"status":"healthy"} or 503.
Limits: Max 100,000 characters per request. CORS enabled for all origins.
MCP Server
The Writing Style Checker is available as an MCP server, letting AI assistants check your writing directly.
Tools
| 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. |
Remote MCP Server
Connect any MCP client to the hosted server - no installation required.
{
"mcpServers": {
"writing-style-checker": {
"type": "url",
"url": "https://wsc.theserverless.dev/mcp"
}
}
}
Local MCP Server (stdio)
Install via npm for local usage. Includes check_file for analyzing files on disk with auto-discovery of .wscrc.json.
npx wsc-mcp
Claude Desktop / Claude Code config:
{
"mcpServers": {
"writing-style-checker": {
"command": "npx",
"args": ["wsc-mcp"]
}
}
}
See the wsc-mcp npm page for full documentation.
CLI
Check files from the command line.
# Check all markdown files
npx wsc-lint check "**/*.md"
# Read from stdin
echo "The code was written very quickly." | npx wsc-lint check --stdin
# JSON output for scripting
npx wsc-lint check "**/*.md" --format json
# GitHub Actions annotations
npx wsc-lint check "**/*.md" --format github
# Create a config file
npx wsc-lint init
See the wsc-lint README for full documentation.
GitHub Action
- uses: theserverlessdev/wsc@v1
with:
files: '**/*.md'
max-warnings: 20
| 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 |
Privacy
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.
Project Structure
.
├── src/
│ ├── core/ # Shared detection engine
│ │ ├── detector.ts # 8 detection algorithms
│ │ ├── words.ts # Word/phrase lists (800+ entries)
│ │ ├── config.ts # Config types, merging, validation
│ │ ├── config-node.ts # Node-only: file loading, discovery
│ │ ├── analyzer.ts # Unified analyzeText() entry point
│ │ └── index.ts # Public API exports
│ ├── docs/ # Documentation content (Markdown files)
│ ├── mcp/
│ │ └── handler.ts # MCP JSON-RPC 2.0 handler
│ ├── lib/
│ │ ├── App.svelte # Main editor page component
│ │ ├── stores/theme.ts # Theme store (light/dark/system)
│ │ └── components/ # UI components (StatsBar, ConfigPanel, etc.)
│ ├── routes/
│ │ ├── +layout.svelte # Shared layout (header, nav, footer)
│ │ ├── api/check/+server.ts # HTTP API endpoint
│ │ ├── mcp/+server.ts # MCP endpoint
│ │ ├── health/+server.ts # Health check endpoint
│ │ ├── docs/+page.svelte # Documentation page
│ │ └── words/+page.svelte # Word library browser
│ └── styles/
│ └── main.scss # Global styles (light + dark themes)
├── mcp-server/ # Standalone stdio MCP server (npm: wsc-mcp)
├── cli/ # CLI tool (npm: wsc-lint)
├── action/ # GitHub Action (composite)
├── tests/ # 341 tests across 18 files
├── static/
│ ├── schema.json # JSON Schema for .wscrc.json
│ ├── llms.txt # AI/LLM discovery file
│ └── llms-full.txt # Detailed LLM context
├── wrangler.toml # Cloudflare Workers config
└── svelte.config.js # SvelteKit configuration
Local Development
git clone https://github.com/theserverlessdev/wsc.git
cd wsc
npm install
npm run dev
Visit http://localhost:5173. The API is at /api/check, MCP at /mcp, health at /health.
Commands
| 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 |
Deployment
Deployed as a Cloudflare Worker at wsc.theserverless.dev.
npm run build
npx wrangler deploy
Contributing
See CONTRIBUTING.md for development setup, testing, and pull request guidelines.
For substantial changes, please open an issue first.
Acknowledgements
- Matt Might for the original shell scripts
- Built with SvelteKit and Svelte 5, deployed on Cloudflare Workers
- Logo made with DiffusionBee
License
Tools it offers (3)
What this server listed when Ahel dialed its public endpoint in Sep 2026, with no key and no account of yours. The names are the server’s own.
check_textfix_duplicateslist_word_lists
Signals
- GitHub stars
- 8
- Last commit
- Jul 2026
- Weekly downloads
- 71
- Weekly_downloads
- 71 weekly_downloads
Advanced
- Delivery
- wsc MCP server → your Ahel connector (mcp.ahel.ai) → your AI.
- Item type
- mcp-server
- Key
io-github-theserverlessdev-wsc- Source
- github.com/theserverlessdev/wsc
- Hosted endpoint
https://wsc.theserverless.dev/mcp
github.com/theserverlessdev/wsc
More in Cloud & infra
MCP server · hostinger
More in Cloud & infraPorkbun (official)
MCP server · oborseth
More in Cloud & infraateam-mcp
MCP server · ariekogan
More in Cloud & infraVPNDetection
MCP server · vpndetection-io
More in Cloud & infradockhold
MCP server · dockhold
More in Cloud & infradrobek
MCP server · freema
More in Cloud & infra