Free · no account · nothing phones home

Take the
tell list.

Every word this app flags, every sentence shape it matches, and every rhythm threshold it measures against — written as a file you drop into the assistant you already use.

It runs on your machine. No key, no sign-in, no request to us. Keep it, edit it, tear the lists out and paste them somewhere else.

node check.mjs draft.mdreal output
draft.md: 17 points — review recommended

vocabulary (3)
  line 1  leverage  [verbs]
  line 1  robust  [adjectives]
  line 1  moving forward  [phrases]

throat clearing (1)
  It's important to note that the direction shifted considerably…

rhythm (3)
  em-dash density 16.1/1k words (aim under ~4)
  low sentence-length variance (stdev 5.9 against a 20.7-word average) — rhythm is metronomic; aim for 8.3+
  only 0% of sentences under 10 words — this voice runs short; aim for 30%+

62 words · 3 sentences · stdev 5.9

Run on the draft from the front page, by the same code that scores it here. The script has no dependencies and makes no network calls.

npx
no account
no download

Or hand over the checker itself.

The files below give your assistant the list and ask it to apply the list. This gives it the thing that made the list. One command, and the same code that printed the report above becomes a tool your agent can call.

npx rewrit-mcp

Claude Code: claude mcp add rewrit -- npx -y rewrit-mcp. Claude Desktop and Cursor take the same command in their MCP config. Node 20 or newer.

check_tells

Scores a draft and names what it found. The report at the top of this page, on your own text.

detect_ai_likelihood

How machine-written a passage reads, nought to a hundred, with the findings behind the number.

compare_drafts

What moved between two versions — including any fact the second one asserts that the first did not.

Your drafts stay on your machine — those three tools do their arithmetic locally and send nothing. The server does ask us for the word list when it starts, so your copy keeps up with this one, and it falls back to the list it shipped with when it cannot reach us. That request is the only one it makes, and it carries no text.

Setup for each editor →

Pick your assistant.

Same instructions in each, wrapped the way that tool expects. The checker script is identical across all four — grab it once.

Claude

A skill. Claude Code loads it on its own when a draft needs an edit pass, and the same file works pasted into a Project.

  • SKILL.md

    ~/.claude/skills/plain-prose/SKILL.md

  • check.mjs

    beside the instruction file

Where it goes

  1. mkdir -p ~/.claude/skills/plain-prose
  2. Save SKILL.md and check.mjs into that folder.

How to run it

Ask for it — "clean this up", "make this sound less generated" — or name it: /plain-prose. In a Project, paste SKILL.md into the custom instructions instead.

Cursor

A rule file. Scoped to prose — markdown, commit messages, docs — so it stays out of the way while you write code.

  • plain-prose.mdc

    .cursor/rules/plain-prose.mdc

  • check.mjs

    beside the instruction file

Where it goes

  1. mkdir -p .cursor/rules
  2. Save plain-prose.mdc into that folder, and check.mjs anywhere in the project.

How to run it

It attaches on its own when the file you are editing is prose. Anywhere else, call it with @plain-prose.

Codex

An AGENTS.md section. Codex reads it at the start of every session in the repository, so prose written there gets the pass without being asked.

  • AGENTS.md

    AGENTS.md (append to what is there)

  • check.mjs

    beside the instruction file

Where it goes

  1. Append the section to AGENTS.md at the root of your repository.
  2. Save check.mjs somewhere in the project — scripts/ is a good home.

How to run it

Automatic for any prose Codex writes in that repository. Ask for it directly with "run the plain-prose pass on this".

Gemini

A GEMINI.md for the CLI, which reads it as context for the whole project. The same text works as a Gem instruction.

Where it goes

  1. Save GEMINI.md at the root of your project, or at ~/.gemini/GEMINI.md for every project.
  2. Save check.mjs beside it.

How to run it

Loaded on start. Ask for the pass by name: "run the plain-prose pass on this draft". For a Gem, paste the file into the instructions box.

97 terms
in 7 categories
8 sentence shapes
12 stock openers

What is actually in the file.

The instructions run a draft through three passes. First the vocabulary — the words that arrived with instruction tuning and never left. Then the shapes, which is the half a word list cannot reach: the false contrast, the sentence that announces itself before it starts.

Then rhythm, measured rather than guessed. Even sentence lengths are the strongest signal there is, and the one people fix last. The file names a number to hit — sentence lengths spread by 0.4 of their own average or better, which is about 6 words on a fifteen-word average — so your assistant can check its own work instead of asking you whether it reads alright.

In front of all of it sits one rule the rest cannot outvote: every claim in the rewrite has to trace back to a sentence in your draft. No new number, no date that moved, no maybe promoted to a did. A sentence too tangled to keep safely gets kept as written and flagged.

the honest part

Where this stops.

A word list and good editing advice get you most of the way, and you should have both for nothing. Here is what they do not do.

No voice.

The file removes the machine shape. It has no model of how any particular person writes, so it lands on clean, neutral prose. The app rewrites in one considered voice, which is the part a word list cannot carry.

No register.

A Slack message and a skip-level note need different shapes. The file treats every draft the same way. The app takes where the thing is going as an input and changes the syntax to match.

Nothing checks the rewrite.

Your assistant is asked to keep every fact, and it usually will. Nothing is holding it to that but the instruction. The app runs the fact rule as a separate constraint and flags the sentences it could not safely change.

It will not beat a detector.

Neither will anything else, reliably. Detectors change weekly and any text can be edited past one. What both versions do is take out the marks a reader notices, which is the part that was ever within anyone's control.

None of that is a reason to skip the free version. Install it, run it on something you were about to send, and see how far it gets you.

The first two are the ones an account fixes, and if you took the server above you have already done the install. npx rewrit-mcp login adds the rewrite, the voice, and the registers to the tools you already have. A few rewrites a month, no card.

Take the list. Use it anywhere.
Come back when you want the other half.