Neuroslop API
Connect detection, detailed analysis and humanization to your app or AI assistant through API and MCP.
Who it is for
Content platforms and CMS
Screen and QA text in the pipeline: flag machine slop before it goes live, humanize on demand.
Agencies and SEO tools
Check and humanize in bulk under your own product. One key, unit-based, no manual approval.
EdTech and writing tools
Score submissions and give writers a self-check with the exact markers, not a black-box percentage.
Why this API
Deterministic checks
The website's rule-based check is reproducible for the same input, settings, engine version and rule/dictionary snapshot.
Detect and fix in one key
Check and humanization behind a single key. Score before and after comes back with the rewrite.
Language-aware results
The response reports applicability. Russian and English have the most developed prose rules; other languages can have limited analysis.
MCP server
Connect neuroslop to your AI agent via MCP — it checks text for slop, humanizes it and strips hidden characters on its own. Works in Claude Code, Cursor, Codex, OpenClaw.
neuroslop_check
Check AI writing signals, recurring constructions, rhythm and text structure. See the specific passages and explanations behind the result. Free and keyless through the hosted HTTPS API; anti-abuse rate limits apply.
neuroslop_humanize
Humanize AI drafts: reshape the delivery, make the language more natural and compare versions while checking important details. Only neuroslop_humanize requires an API key.
neuroslop_clean
Strips hidden characters: zero-width spaces, homoglyphs. Local, no key needed.
How to connect
- Free and keyless through the hosted HTTPS API; anti-abuse rate limits apply. Strips hidden characters: zero-width spaces, homoglyphs. Local, no key needed. Only neuroslop_humanize requires an API key.
- Download neuroslop-mcp.mjs and add the config:
{
"mcpServers": {
"neuroslop": {
"command": "node",
"args": ["neuroslop-mcp.mjs"]
}
}
}
- Replace the absolute path. NEUROSLOP_API_KEY is optional and is used only by neuroslop_humanize; neuroslop_check and neuroslop_clean work without a key.
Connect to your agent (MCP) Get a key in your account
Authentication
Every request carries the key in a header: Authorization: Bearer <key> or X-API-Key: <key>.
Get a key two ways, no manual approval:
- On the site — your account → API: pick a pack, pay by card, SBP or USDT — the key is issued instantly.
- In the Telegram bot — @AITextChecker_bot → «🔌 API»: pay with Telegram Stars, the key arrives in the chat.
Pricing: units
API checking and rewriting for apps, bots and MCP. Unit costs depend on the operation and text length. The quota terms are shown for each pack; existing keys retain their purchased terms.
| Call | Weight | What it does |
|---|---|---|
POST /v1/check | 1 | deterministic breakdown: score, verdict, markers |
POST /v1/rewrite tier=flash | 30 per 2,500 chars | humanization, Standard |
POST /v1/rewrite tier=pro | 100 per 7,500 chars | humanization, Premium: holds meaning and style deeper |
| Plan | Units | Price | Requests / min |
|---|
A 3,000-unit pack is 3,000 checks, or 100 Standard humanizations, or 30 Premium. Checks are weight 1, Standard 30 per 2,500 characters, Premium 100 per 7,500.
POST/v1/check
Body: { "text": "...", "lang": "en" } (lang optional). Up to 20,000 characters.
Default limit for both endpoints: 20,000 UTF-16 code units, including spaces. A deployment may set a lower cap; GET /v1/health reports limits.maxInputChars, and too_long errors report max.
curl -X POST https://neuroslop.net/v1/check \
-H "Authorization: Bearer ns_YOURKEY" \
-H "Content-Type: application/json" \
-d '{"text": "In today'"'"'s fast-paced world, it is important to note..."}'
Response:
{
"score": 34, // 0-100, lower = more slop
"verdict": "Сильный нейрослоп — текст читается как сгенерированный",
"lang": "en",
"words": 120,
"findingsCount": 9,
"findings": [ { "id": "cliche", "category": "Cliché", "severity": "high", "count": 4 }, ... ],
"remaining": 2999 // units left
}
POST/v1/rewrite
Body: { "text": "...", "tier": "flash" | "pro", "lang": "en" } Defaults to tier=flash. Up to 20,000 characters.
curl -X POST https://neuroslop.net/v1/rewrite \
-H "Authorization: Bearer ns_YOURKEY" \
-H "Idempotency-Key: 018f-request-unique-id" \
-H "Content-Type: application/json" \
-d '{"text": "...", "tier": "pro"}'
Response:
{
"text": "rewritten text",
"tier": "pro",
"scoreBefore": 34,
"scoreAfter": 96,
"qualityBasis": "editorial_review",
"remaining": 2870
}
qualityBasis is editorial_review when an AI editorial review was confirmed, or unverified otherwise; it is not a guarantee of accuracy. unchanged=true returns the original with spent=0. reason is quality_unverified, no_improvement, or unchanged. A higher detector score is not required for an approved rewrite.
{
"text": "original text",
"tier": "pro",
"scoreBefore": 90,
"scoreAfter": 90,
"unchanged": true,
"reason": "quality_unverified",
"qualityBasis": "unverified",
"spent": 0,
"remaining": 2870
}
Idempotency-Key with each rewrite. The same key and request replay the original response without another rewrite or charge; a changed request returns 409. This opt-in keeps the terminal response encrypted for up to 24 hours in a separate live cache excluded from application-managed backups. Without this header no response cache is created.GET/v1/balance
Key quota left: { plan, quota, used, remaining, resetMonth, perMinute }.
quotaMode: "one_time", resetMonth: null- One-time unit pack. No monthly refill.
quotaMode: "monthly"- Monthly quota. Refills each calendar month.
GET/v1/health
Service liveness, no key needed: { "ok": true, "llm": true, "limits": { "maxInputChars": 20000 } }.
Errors
| Code | error | Meaning |
|---|---|---|
| 401 | no_api_key / unknown_key / disabled | missing or invalid key |
| 429 | rate_limited / quota | per-minute limit or exhausted units |
| 409 | idempotency_conflict / idempotency_in_progress | request key reused with another body, or the first request is still running |
| 400 | text_required / too_long / bad_json | malformed request |
| 502/503 | rewrite_failed / llm_unavailable | LLM layer down, units not spent |