---
name: textlume
description: Check text for AI writing, humanize or paraphrase it while keeping its facts, summarize it, and check its grammar with the Textlume MCP tools. Use when the textlume MCP server is connected and the user asks to check whether text reads as AI-written, rewrite AI-sounding text, reword, summarize or proofread.
---

# Textlume writing tools

Textlume gives an agent six tools over MCP: an AI detector, a humanizer, a paraphraser, a summarizer and a grammar checker. Every call goes through the Textlume API with the user's own API key.

## Setup

1. The user needs the Pro plan and an API key from the Textlume dashboard (API section).
2. Put the key in the environment as `TEXTLUME_API_KEY`. Never write the key into a file that gets committed, and never print it.
3. Connect the hosted server. In Claude Code:

```sh
claude mcp add --transport http textlume https://textlume.com/api/mcp --header "Authorization: Bearer $TEXTLUME_API_KEY"
```

   In Claude Desktop or another client: server URL `https://textlume.com/api/mcp`, header `Authorization: Bearer <key>`. A client that only runs local servers can start the stdio server from https://textlume.com/mcp/server.mjs with `node server.mjs` and `TEXTLUME_API_KEY` set.
4. Check: list the tools. You should see `detect_text`, `detect_batch`, `humanize_text`, `paraphrase_text`, `summarize_text`, `check_grammar`.

## Which tool to call

### `detect_text` (POST /api/v1/detect)

When: The user asks whether a text reads as AI-written, wants an AI score, or wants to know which sentences read as machine-like.

What it does: Read how likely a text was written by a language model. Returns a figure from 0 to 100 with its margin, our confidence rating (low, medium or high), and a reading for every sentence. Use the figure only when calibrated is true: false means the language has no fitted curve yet.

Arguments:

- `text` (required): The text to check. Too short a text gets no reading (the error says the minimum)
- `language`: Two-letter code. Omitted, the service reads it from the text
- `contentType`: essay, article, email, code

### `detect_batch` (POST /api/v1/detect/batch)

When: The user hands over several texts at once (a folder of essays, a list of posts). One call, one result per item.

What it does: Check many texts in one call. Each item carries its own id and either a reading or an error; one item failing never fails the batch.

Arguments:

- `items` (required)

### `humanize_text` (POST /api/v1/humanize)

When: The user wants AI-sounding text to read more like a person wrote it. Show the before and after reading the tool returns.

What it does: Rewrite machine-sounding text so it reads more like a person wrote it, scored by our own detector before and after. It keeps every fact: a rewrite that changes one is refused and the original sentence is put back. It does not promise to defeat any other detector.

Arguments:

- `text` (required)
- `mode`: natural, formal, simple, academic, creative, shorten or expand
- `tab`: standard, academic, professional, casual
- `strength`: regular, aggressive
- `language`

### `paraphrase_text` (POST /api/v1/paraphrase)

When: The user wants the same meaning in different words (rewording, simplifying, shortening, a different register).

What it does: Reword a text while keeping its meaning. Same guarantees as humanize_text, with the paraphraser modes.

Arguments:

- `text` (required)
- `mode`: standard, fluency, formal, academic, simple, creative, expand or shorten
- `strength`: readable, balanced, strong
- `language`

### `summarize_text` (POST /api/v1/summarize)

When: The user wants the main points of a long text, as key sentences, a paragraph or bullets.

What it does: Summarise a text as key sentences, a paragraph or bullet points.

Arguments:

- `text` (required)
- `mode`: key-sentences, paragraph, bullets
- `length`: short, medium, long

### `check_grammar` (POST /api/v1/grammar)

When: The user wants spelling, grammar and punctuation checked. Apply only the fixes the user accepts.

What it does: Find grammar, spelling and punctuation problems, each with its position, an explanation and replacements.

Arguments:

- `text` (required)
- `language`: For example en-US or de-DE

## Reading a detector result

- Every result has a figure from 0 to 100, a margin, a confidence rating (low, medium, high) and a reading per sentence. Report the figure with its margin and the rating, never a bare percentage.
- If `calibrated` is false, the language has no fitted line yet. Say there is no reading for that language and do not quote the figure as a result.
- The figure says how machine-like the text reads, not what share a machine wrote, and it is not proof of who wrote it. Never call a text "detected". Point to the sentences that read as machine-like instead.
- Texts under 50 words get no reading. Short texts always get a low confidence rating.

## Rewrites

- `humanize_text` and `paraphrase_text` keep names, numbers, quotations and claims. A sentence whose rewrite would change a fact is put back as it was, and the result notes say so. Pass those notes on to the user.
- The before and after figures are Textlume's own detector. Do not promise the user that any other detector will agree.
- Hand the user the rewritten text in full. Do not rewrite it again yourself before showing it.

## Limits

- 60 requests per 60 seconds per key.
- At most 4 detector calls and 2 rewrite or summary calls at the same time per key.
- Up to 20,000 words per call. The detector reads up to 10,000 words (90,000 characters) per text. Split longer texts and say that you did.
- `detect_batch` takes up to 50 items.
- Words count against the monthly words of the user's plan.

## Errors

The tool result carries the API's own message. Act on the code:

- `no_key` or `bad_key` (401): the key is missing or wrong. Ask the user to set `TEXTLUME_API_KEY`. Do not retry.
- `out_of_scope` (403): the key was created without this tool's scope. The user creates a key with that scope on the dashboard.
- `plan_lapsed` (403): the Pro plan is not active. Tell the user, do not retry.
- words used up (402): the response has `available`, the words left this month. Offer to send a shorter text.
- `rate_limited` or `concurrency_limited` (429): wait the seconds in `retry-after`, then retry once. Send batches one after another, not in parallel.
- `text_too_long` (413): split the text and check the parts, and say so.
- `too_short` (422): the text is under 50 words. `not_calibrated` (422): no reading for that language.
- `engine_starting`, `engine_busy`, `engine_unavailable` (503) or `engine_timeout` (504): the service is not available right now. Wait and retry once. Never make up a result.
