Skip to main content
Glama
Vladimir-Human

humanizer-ru

humanizer-ru

Навык для Claude Code, Codex, Cursor и Claude.ai. Правит русский текст после нейросети: убирает канцелярит, штампы и оформление «как у ChatGPT» и следит, чтобы цифры, даты, имена и оговорки остались прежними.

English · Сайт со сравнением

npx skills add Vladimir-Human/humanizer-ru

Пример

Пост для телеграм-канала пекарни, который написала нейросеть:

Вот готовый вариант поста для Telegram-канала. Он структурирован так, чтобы клиенты сразу увидели главную информацию.


🥐 Важные новости для гостей «Колоса» на Садовой!

Друзья, наша главная помощница — печь на Садовой, 14 — требует заботы и небольшого ремонта. Поэтому с понедельника, 2 ноября, мы временно закрываем эту точку примерно на две недели.

Если подрядчики справятся быстрее, мы с радостью откроемся раньше! Обязательно сообщим вам об этом здесь.

Как мы работаем в это время:

🎂 Предзаказы на торты. Все ноябрьские заказы в силе! Мы бережно испечем ваши торты и будем выдавать их в нашей пекарне на ул. Пушкина, 3 (ежедневно с 10:00 до 19:00).

🍞 Хлеб на развес. К сожалению, во время ремонта мы не сможем продавать весовой хлеб. Но как только печь снова заработает, сразу вернем его на витрины.

Приносим извинения за временные неудобства и очень ждем вас в гости на Пушкина, 3 за свежей выпечкой и горячим кофе! ☕️

Ваш «Колос» 🌾

После «очеловечь»:

Новости для гостей «Колоса» на Садовой

Друзья, печи на Садовой, 14 нужен небольшой ремонт. С понедельника, 2 ноября, мы временно закрываем эту точку примерно на две недели. Если подрядчики справятся быстрее, откроемся раньше и сообщим об этом здесь.

Пока идёт ремонт:

Торты по предзаказу. Все ноябрьские заказы в силе. Испечём их и будем выдавать в пекарне на ул. Пушкина, 3, ежедневно с 10:00 до 19:00.

Хлеб на развес. Пока печь на ремонте, весовой хлеб продавать не сможем. Как только она заработает, вернём его на витрины.

Извините за неудобства. Ждём вас на Пушкина, 3 за свежей выпечкой и горячим кофе.

Ваш «Колос»

Это ответ навыка из сравнения ниже (текст n01, исполнитель Claude Sonnet 5.5), руками в нём ничего не правили.

Related MCP server: mcp-ai-slop-checker

Установка

Любой агент с поддержкой Agent Skills (Claude Code, Codex, Cursor и другие):

npx skills add Vladimir-Human/humanizer-ru

В Claude Code можно поставить плагином, тогда обновления приходят через /plugin:

/plugin marketplace add Vladimir-Human/humanizer-ru
/plugin install humanizer-ru@humanizer-ru

В Claude.ai скачайте humanizer-ru-skill.zip из последнего релиза и загрузите в Settings → Capabilities → Skills.

Вручную: скопируйте папку skills/humanizer-ru в ~/.claude/skills/ или ~/.agents/skills/.

Как пользоваться

Вставьте текст и напишите «очеловечь». Другие просьбы:

  • «проверь, что выдаёт ИИ, но не правь» — список мест с объяснением, текст не меняется;

  • «убери только канцелярит» (только тире, только жирный) — правится один слой;

  • «поправь README.md» — правится проза, код и ссылки остаются как были;

  • образец своего текста и просьба — правка в вашей манере.

Хороший текст человека, договор или закон навык почти не трогает и говорит об этом.

Сравнение с другими навыками

Навыков, которые обещают то же самое, на GitHub больше двадцати. Мы сравниваем их на русских текстах вслепую: одна модель (Claude Sonnet 5.5) применяет каждый навык, три модели других лабораторий (Gemini 4 Argon, Kimi K3, Muse Spark 1.3) ранжируют перемешанные варианты по вопросу «что бы вы отправили с наименьшей доработкой» и выписывают ошибки смысла. У каждого судьи один голос, ошибка засчитана, если её отметили двое из трёх. Пороги записаны до того, как появились тексты.

Последний замер, 4.1.1: 24 свежих ИИ-текста одиннадцати моделей, которых навык не видел, и шесть человеческих текстов-ловушек.

Участник

Звёзды

Среднее место из 5

humanizer-ru выше

Тексты с ошибкой смысла из 24

humanizer-ru 4.1.1

125

2.38

—

2

ilyautov/humanizer-ru

452

3.10

65%

2

avoid-ai-writing-russian

18

3.18

69%

9

просьба одной строкой

—

3.74

77%

8

Пятым участником был новый вариант нашей инструкции из трёх циклов настройки. Прошлую инструкцию он не обогнал (49% сравнений, ошибок столько же), поэтому в 4.1.1 его нет. Gemini и Kimi ставят humanizer-ru выше обоих соперников, Muse Spark — выше avoid-ai-writing-russian и вровень с ilyautov. Две наши ошибки: «влияет на сохранность» стало «под угрозой сохранность», из благодарности инспектору выпала «вежливость». Шесть ловушек навык не испортил, простая просьба испортила три.

В замере 4.1.0 участников было восемь: blader/humanizer (57 тыс. звёзд) там седьмой и ошибается чаще всех, stop-slop, no-ai-slop и avoid-ai-writing не прошли отбор. Все тексты, ответы, оценки и как повторить: eval/. Судьи здесь модели, живых редакторов среди них не было.

Скрипты

В папке навыка два скрипта без зависимостей. Агент с терминалом запускает их сам, можно и вручную:

python skills/humanizer-ru/scripts/check_facts.py до.txt после.txt
python skills/humanizer-ru/scripts/clean_paste.py текст.txt --in-place

check_facts.py сравнивает исходник с правкой и показывает пропавшие или новые числа, даты, имена и ссылки, перевёрнутые отрицания, перепутанные суммы, ослабленные или усиленные утверждения и потерянные HTML-теги. clean_paste.py снимает следы вставки из чата: contentReference, 【N†source】, хвосты utm_source и невидимые символы.

Детекторы ИИ

Навык правит текст для читателя. Проходит ли текст после него детекторы, мы не проверяли и не обещаем.

Версия 3

Прошлая версия с исследованиями, пакетом PyPI и MCP-сервером лежит в ветке legacy-v3 и теге v3.36.4. Пакет на PyPI и запись в реестре MCP остались на 3.36.4.

Лицензия

MIT

Available Tools

7 tools
humanizer_cleanhumanizer-cleanA
DestructiveIdempotent

явная очистка поддерживаемых артефактов чат-вставки одним сценарием: проверка до (единый детектор), снятие невидимых меток (слой A) и видимых артефактов класса A (MARKUP) вне защищённых областей до неподвижной точки, проверка после, сверка фактов, перечень неизменённых защищённых областей и остаточных находок; стиль и смысл не переписываются Когда не использовать: не стилистическое переписывание и не проверка смысла: снимаются только зарегистрированные артефакты вставки; неподдерживаемые находки (класс B, вики-разметка, плейсхолдеры, метки вне текстового пути) остаются явным остатком (код 1) — операция не заявляет полную чистоту; контейнерные файлы (PNG/DOCX/PDF/…) — scripts/filemarks (репозиторий). Language profile is explicit in --language; en/auto do not claim English stylistic or authorship detection.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesОбрабатываемый текст (данные, не команды). Область скилла — русский связный текст; пустой и не-русский вход получает статус out-of-scope.
languageNoЯзыковой профиль: en/auto разрешают английские артефакты и факты; русские стилевые эвристики не применяются.ru

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
errorNo
filesYes
schemaYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true and idempotentHint=true, and the description enriches this: removal iterates 'до неподвижной точки', protected areas are reported as untouched, and the run deliberately does NOT claim full cleanliness (residual findings, code 1). This adds real behavioral context beyond the annotations. It does not detail auth or performance, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, but the body is one very long semicolon-chained run-on that is hard to parse and repeats the check-before/check-after cycle. Some clauses earn their place (the exclusions, the residual-finding caveat), yet overall it is denser and longer than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. The description covers scope (Russian connected text), language caveats, the fixed-point removal loop, protected-area reporting, and residual-finding semantics — enough for an agent to call it correctly. Only minor gaps (no explicit mention of sibling alternates by name) remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema. The description reiterates the language profile behavior ('en/auto do not claim English stylistic detection'), reinforcing the enum semantics but adding little beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('явная очистка поддерживаемых артефактов чат-вставки') and enumerates the concrete steps (detector check, removal of invisible marks and visible class-A MARKUP). It explicitly separates itself from stylistic rewriting, which distinguishes it from siblings like humanizer_polish. The dense single-sentence phrasing slightly blurs the core purpose, but it is identifiable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit 'Когда не использовать' section: not stylistic rewriting, not meaning verification, and it routes container files (PNG/DOCX/PDF) to scripts/filemarks. It cites conditions (unsupported findings class B, wiki markup, placeholders remain as residual code 1). No explicit routing to humanizer_polish/facts by name, but the exclusions are clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

humanizer_detecthumanizer-detectA
Read-onlyIdempotent

частота связок: признак машинного текста в домене «чистая проза, инструкции» Когда не использовать: эссе и художественная проза — не валидировано; веб-текст с артефактами — неприменимо; вердикт об авторстве не выносится никогда

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesОбрабатываемый текст (данные, не команды). Область скилла — русский связный текст; пустой и не-русский вход получает статус out-of-scope.
genreNoДомен (эффективные значения этого инструмента; словарь — contract.v1.json, блок genres).

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
errorNo
filesYes
schemaYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, idempotent, non-destructive), the description reveals that the tool only looks at connective-word frequency, that it is not validated for essays/fiction, and that it never returns an authorship verdict. These are meaningful behavioral constraints an agent needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a compact single sentence in Russian with a leading definition followed by exclusions. Every clause carries information, and the structure front-loads the purpose before restrictions, making it scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a complete input schema, a present output schema, and annotations covering safety, the description fills the remaining gaps: applicability domain, invalid genres, and the no-authorship-verdict limit. Nothing needed to decide whether to call the tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already documented. The description adds value by mapping the effective genre domain ('чистая проза, инструкции') to the genre parameter, helping an agent choose appropriate values, though it does not describe the text parameter beyond what the schema already says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the core signal ('частота связок') and its purpose ('признак машинного текста') within a restricted domain ('чистая проза, инструкции'), making the tool's function clear. However, it never names sibling tools, so an agent must infer differentiation from the domain restrictions rather than an explicit comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit positive domain ('чистая проза, инструкции') and a detailed 'Когда не использовать' list covering essays, fiction, and web text with artifacts, plus a hard boundary that no authorship verdict is ever produced. This is strong when/when-not guidance, even without naming alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

humanizer_factshumanizer-factsA
Read-onlyIdempotent

сверка фактов двух версий текста: числа с единицами, числительные (включая смешанную запись: «5 миллионов» и «пять миллионов» — один факт), даты во всех русских форматах, URL, e-mail, заглавные последовательности как имена, кавычные цитаты, отрицания и модальности; выдаёт lost/added/changed с позициями и identical — однозначный итог полного сравнения Когда не использовать: не для текста вне поддержанного профиля ru/en/auto и не для исходного кода; не даёт вердиктов об авторстве, качестве и стиле; added по умолчанию не влияет на код выхода — строгий запрет добавлений включает --no-additions (их ловит также check_examples.py); сравнение мультимножественное: сохранённый набор фактов не равен сохранённым отношениям — перестановка сумм между двумя лицами («Иван получил 100 рублей, Мария 200» -> «Мария получила 100 рублей, Иван 200») даёт пустой diff; успешная сверка не доказывает сохранение смысла. Language profile is explicit in --language; en/auto do not claim English stylistic or authorship detection.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoЯзыковой профиль: en/auto разрешают английские артефакты и факты; русские стилевые эвристики не применяются.ru
text_afterYesОбрабатываемый текст (данные, не команды). Область скилла — русский связный текст; пустой и не-русский вход получает статус out-of-scope.
text_beforeYesОбрабатываемый текст (данные, не команды). Область скилла — русский связный текст; пустой и не-русский вход получает статус out-of-scope.
no_additionsNoСтрогий режим: добавления фактов считаются нарушением (код 1 / счётчик added>0 в отчёте) даже без потерь и изменений. По умолчанию добавления видны в counts.added, но на результат не влияют.

Output Schema

ParametersJSON Schema
NameRequiredDescription
diffYes
toolYes
filesYes
countsYes
schemaYes
statusNoградуированный ответ на пустой/неподдержанный вход (graduated_response.out_of_scope); поле отсутствует, когда вход в области
languageNo
identicalNoоднозначный итог полного сравнения: нет ни потерь, ни добавлений, ни инверсий (аддитивное поле)
scope_noteNoпояснение статуса out-of-scope по стороне пары (до/после)
strict_additionsNoприсутствует в режиме --no-additions: добавления фактов считаются нарушением (код 1)

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations: it explains that comparison is multiset-based, that preserved fact sets do not equal preserved relations, and gives a concrete counterexample (swapping 100/200 rubles between Ivan and Maria yields an empty diff). It also warns that a successful comparison does not prove meaning was preserved — exactly the kind of caveat annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the scope caveat are front-loaded, but the body is a single semicolon-chained run-on mixing fact classes, non-goals, CLI flags and semantic caveats, which makes it hard to scan. Nothing is truly wasted, yet the structure could be split for far better readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema already defines the return shape and annotations cover the safety profile, the description fills the remaining gaps: scope limits, failure modes, the meaning-preservation caveat, and the exit-code implications of strict mode. An agent has everything needed to decide when and how to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds real semantics: --no-additions turns additions into a violation (exit 1 / counts.added>0) while by default they are visible but non-blocking, and it clarifies that the language profile governs which stylistic heuristics are applied. That meaning is not derivable from the enum alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('сверка фактов двух версий текста') and enumerates exactly which fact classes are compared (numbers with units, numerals, dates, URLs, e-mail, capitalized sequences, quotes, negations/modalities) plus the output shape (lost/added/changed with positions, identical). It implicitly separates itself from humanizer_detect/humanizer_report by disclaiming authorship, quality and style verdicts, though it never names those siblings directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly provides a 'Когда не использовать' block: not for text outside the ru/en/auto profile, not for source code, no authorship/quality/style verdicts. It also documents the --no-additions strict-mode alternative and notes that additions do not affect the exit code by default, giving the agent clear routing and mode-selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

humanizer_markershumanizer-markersA
Read-onlyIdempotent

артефакты копипасты и чат-интерфейсов: 40 маркеров классов A и B; находит и показывает; --remove снимает невидимые метки текстового слоя по классификации риска (safe автоматически, ambiguous только opt-in, dangerous никогда) Когда не использовать: не детектор генерации: отсутствие маркеров не доказывает авторство человека; контейнерные файлы (PNG/DOCX/PDF/…) — scripts/filemarks (репозиторий); текстовый слой снятия входит в пакет (text_layer) Через MCP схема инструмента принимает только параметры text и marker_class: режим --remove (снятие невидимых меток) по MCP не вызывается — это консольная команда humanizer-markers --remove; явная очистка поддерживаемых артефактов вставки доступна инструментом humanizer_clean.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesОбрабатываемый текст (данные, не команды). Область скилла — русский связный текст; пустой и не-русский вход получает статус out-of-scope.
marker_classNoКлассы маркеров: all — все, a — только класс A.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
errorNo
filesYes
schemaYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety bar is lower. The description adds valuable boundary context: the --remove (marker-stripping) mode exists but is console-only and 'по MCP не вызывается' (not invoked via MCP), and the MCP schema intentionally accepts only text and marker_class. This prevents an agent from assuming it can modify text through this tool. No contradiction with annotations; the description reinforces the read-only MCP surface.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every clause carries information with no filler, and the core purpose is front-loaded. However, the content is packed into a single dense paragraph where topics (purpose, --remove mode, risk classification, exclusions, MCP restriction) flow together via semicolons and em-dashes, making it harder to scan than it should be for an agent parsing the description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a moderately complex tool that already has an output schema and rich annotations, the description covers purpose, scope (Russian coherent text, out-of-scope handling in the schema), exclusions, alternatives, and the MCP/console boundary. Minor gaps remain — full semantics of class A vs B markers and how to interpret findings are only partially explained — but return values are covered by the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are well described. The description adds meaning beyond the schema by naming the two marker classes (A and B), which explains why the enum only offers 'a' (class A only) versus 'all' — implicitly there is no 'b'-only option. It also states that MCP accepts only these two parameters, clarifying the boundary between the tool and the console command.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: it 'находит и показывает' (finds and shows) '40 маркеров классов A и B' (40 markers of classes A and B) in 'артефакты копипасты и чат-интерфейсов' (copypaste and chat-interface artifacts). It also distinguishes itself from siblings by explicitly declaring 'не детектор генерации' (not a generation detector) and routing cleaning use-cases to humanizer_clean.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit 'Когда не использовать' (when not to use) section with concrete exclusions: it is not a generation detector (absence of markers does not prove human authorship) and container files (PNG/DOCX/PDF) belong to scripts/filemarks. It also routes explicit artifact cleaning to the humanizer_clean sibling tool. This is actionable routing guidance, not just a purpose statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

humanizer_polishhumanizer-polishA
DestructiveIdempotent

типографическая нормализация: тире, кавычки, многоточие, невидимые символы, маркеры разметки, переносы строк к LF Когда не использовать: не запускать на Markdown и разметке дефолтным режимом: снимает ##, **, ёлочки, тире, многоточие — для разметки режимы --preserve-markup и --typographic; когда нужна правка лексики или смысла — полировка слов не трогает. Language profile is explicit in --language; en/auto do not claim English stylistic or authorship detection.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNostrip — снять машинный слой типографики (destructive для Markdown; граница — в when_not); preserve-markup — только невидимые символы и NBSP; typographic — русская публикационная типографика без снятия разметки.
textYesОбрабатываемый текст (данные, не команды). Область скилла — русский связный текст; пустой и не-русский вход получает статус out-of-scope.
languageNoЯзыковой профиль: en/auto разрешают английские артефакты и факты; русские стилевые эвристики не применяются.ru

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
errorNo
filesYes
schemaYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and idempotentHint=true. The description adds crucial context that the default mode is destructive for Markdown and specifies boundaries (strip removes ##, **, ёлочки, тире, многоточие). Doesn't restate everything, so a 4. With annotations covering safety, this is strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the what, then when-not, but is dense and mixes English and Russian, with limited spacing. It contains useful info but is not optimally structured for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-param tool with 100% schema coverage, an output schema, and annotations, the description covers purpose, boundaries, and non-goals. It could mention sibling tools more directly, but is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are fully documented. Description adds only marginal detail about language profile. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific operation on a specific resource: typographic normalization (dashes, quotes, ellipses, invisible chars, markup markers, LF). Concrete and nouny. It doesn't distinguish itself from siblings like humanizer_clean or humanizer_markers, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names when NOT to use it (Markdown/default mode) and names the alternatives (--preserve-markup, --typographic). Also states that it does not touch lexicon or meaning, and that en/auto do not do English style/authorship. Clear when/alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

humanizer_reporthumanizer-reportA
Read-onlyIdempotent

машиночитаемый отчёт правки: токены keep/add/delete, адаптированные компоненты SARI, классы правок, сверка фактов авторских категорий (lost/changed/added, unchanged и identical — полный итог), MTLD до и после Когда не использовать: не для текста вне поддержанного профиля ru/en/auto и не для исходного кода; не даёт вердиктов об авторстве, качестве и стиле; added не влияет на код выхода (их ловит check_examples.py); facts.unchanged не учитывает добавления — полный итог сравнения даёт facts.identical. Language profile is explicit in --language; en/auto do not claim English stylistic or authorship detection.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoЯзыковой профиль: en/auto разрешают английские артефакты и факты; русские стилевые эвристики не применяются.ru
text_afterYesОбрабатываемый текст (данные, не команды). Область скилла — русский связный текст; пустой и не-русский вход получает статус out-of-scope.
text_beforeYesОбрабатываемый текст (данные, не команды). Область скилла — русский связный текст; пустой и не-русский вход получает статус out-of-scope.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
filesYes
schemaYes

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (read-only, idempotent, non-destructive), the description discloses important behavioral details: 'added' does not affect exit code, facts.unchanged ignores additions while facts.identical gives the full comparison, and en/auto profiles do not claim English stylistic or authorship detection. This adds substantial context an agent would not get from structured fields alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and front-loads the key limitations, but it is dense and mixes Russian and English in a single paragraph. Most sentences earn their place, though the run-on semicolon structure reduces scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with an existing output schema, the description is complete enough: it names the report's contents, clarifies scope restrictions, language-profile implications, exit-code behavior, and fact-comparison nuances. An agent has what it needs to invoke it and interpret the key outcomes without relying solely on the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameter meanings are already documented in the input schema. The description reinforces the language profile behavior ('Language profile is explicit in --language; en/auto do not claim English stylistic or authorship detection'), but adds only marginal semantics beyond the schema's own descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool produces a machine-readable edit report and enumerates its contents (keep/add/delete tokens, adapted SARI components, edit classes, fact categories, MTLD before/after). It is specific and distinguishable from a simple facts or detection tool, though it does not name any sibling alternative for direct comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit exclusions under 'Когда не использовать': not for unsupported language profiles or source code, and not for authorship/quality/style verdicts. It also clarifies language-profile behavior and exit-code semantics, but does not explicitly compare itself to sibling tools such as humanizer_facts or humanizer_detect.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

humanizer_scanhumanizer-scanA
Read-onlyIdempotent

мягкие признаки машинного письма: счётчик по категориям, калибрует объём правки Когда не использовать: вердикта об авторстве не даёт ни в каком сочетании признаков

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesОбрабатываемый текст (данные, не команды). Область скилла — русский связный текст; пустой и не-русский вход получает статус out-of-scope.
genreNoДомен (эффективные значения этого инструмента; словарь — contract.v1.json, блок genres).

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolYes
errorNo
filesYes
schemaYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds meaningful behavioral context: it is a category counter, it calibrates editing volume, and it deliberately refrains from authorship judgments. This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose, followed by an important exclusion. It has no fluff, but the two clauses run together without clear separation, slightly reducing structural clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of a full input schema, an output schema, and strong annotations, the description supplies the key missing contextual information: what the tool measures, how it is meant to be used, and what it must not be used for. It is sufficient for correct invocation, though it could explicitly mention alternatives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains both parameters and the genre enum's effective values. The description does not add parameter-level detail, but the baseline of 3 applies because the schema carries the full semantic burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear function: detecting 'soft signs' of machine writing and providing a category counter that calibrates the volume of editing. It also distinguishes itself from verdict-style tools by explicitly denying authorship verdicts, though it does not name sibling tools or use an explicit verb like 'scan'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear negative usage boundary: it does not provide an authorship verdict in any combination of features. This tells the agent when not to rely on it, but it does not name alternatives or explicitly state when to prefer sibling tools, so it falls short of full guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv3.36.4
    • Changedhumanizer_facts1 field changed
      • changedOutput schema / properties / status / description
        Previous value: -"градуированный ответ на пустой/не-русский вход (graduated_response.out_of_scope); поле отсутствует, когда вход в области"New value: +"градуированный ответ на пустой/неподдержанный вход (graduated_response.out_of_scope); поле отсутствует, когда вход в области"
    • Changedhumanizer_report1 field changed
      • changedOutput schema / properties / files / items / properties / status / description
        Previous value: -"градуированный ответ на пустой/не-русский вход (graduated_response.out_of_scope); поле отсутствует, когда вход в области"New value: +"градуированный ответ на пустой/неподдержанный вход (graduated_response.out_of_scope); поле отсутствует, когда вход в области"
  2. 4 tool updatesv3.36.0
    • Changedhumanizer_clean2 fields changed
      • addedInput schema / properties / language
        Added value: +{
        +  "default": "ru",
        +  "description": "Языковой профиль: en/auto разрешают английские артефакты и факты; русские стилевые эвристики не применяются.",
        +  "enum": [
        +    "ru",
        +    "en",
        +    "auto"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / files / items / properties / language
        Added value: +{
        +  "enum": [
        +    "ru",
        +    "en",
        +    "auto"
        +  ],
        +  "type": "string"
        +}
    • Changedhumanizer_facts2 fields changed
      • addedInput schema / properties / language
        Added value: +{
        +  "default": "ru",
        +  "description": "Языковой профиль: en/auto разрешают английские артефакты и факты; русские стилевые эвристики не применяются.",
        +  "enum": [
        +    "ru",
        +    "en",
        +    "auto"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / language
        Added value: +{
        +  "enum": [
        +    "ru",
        +    "en",
        +    "auto"
        +  ],
        +  "type": "string"
        +}
    • Changedhumanizer_polish2 fields changed
      • addedInput schema / properties / language
        Added value: +{
        +  "default": "ru",
        +  "description": "Языковой профиль: en/auto разрешают английские артефакты и факты; русские стилевые эвристики не применяются.",
        +  "enum": [
        +    "ru",
        +    "en",
        +    "auto"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / files / items / properties / language
        Added value: +{
        +  "enum": [
        +    "ru",
        +    "en",
        +    "auto"
        +  ],
        +  "type": "string"
        +}
    • Changedhumanizer_report2 fields changed
      • addedInput schema / properties / language
        Added value: +{
        +  "default": "ru",
        +  "description": "Языковой профиль: en/auto разрешают английские артефакты и факты; русские стилевые эвристики не применяются.",
        +  "enum": [
        +    "ru",
        +    "en",
        +    "auto"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / files / items / properties / language
        Added value: +{
        +  "enum": [
        +    "ru",
        +    "en",
        +    "auto"
        +  ],
        +  "type": "string"
        +}
  3. 4 tool updatesv3.35.1
    • Addedhumanizer_clean
    • Changedhumanizer_facts5 fields changed
      • addedInput schema / properties / no_additions
        Added value: +{
        +  "description": "Строгий режим: добавления фактов считаются нарушением (код 1 / счётчик added>0 в отчёте) даже без потерь и изменений. По умолчанию добавления видны в counts.added, но на результат не влияют.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / identical
        Added value: +{
        +  "description": "однозначный итог полного сравнения: нет ни потерь, ни добавлений, ни инверсий (аддитивное поле)",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / scope_note
        Added value: +{
        +  "description": "пояснение статуса out-of-scope по стороне пары (до/после)",
        +  "type": "string"
        +}
      • addedOutput schema / properties / status
        Added value: +{
        +  "description": "градуированный ответ на пустой/не-русский вход (graduated_response.out_of_scope); поле отсутствует, когда вход в области",
        +  "enum": [
        +    "out-of-scope"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / strict_additions
        Added value: +{
        +  "description": "присутствует в режиме --no-additions: добавления фактов считаются нарушением (код 1)",
        +  "type": "boolean"
        +}
    • Changedhumanizer_markers2 fields changed
      • addedOutput schema / properties / files / items / properties / markers / items / properties / end
        Added value: +{
        +  "description": "конец совпадения (исключительно) в тех же координатах, что start",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / files / items / properties / markers / items / properties / start
        Added value: +{
        +  "description": "начало совпадения в кодовых точках внутри строки (NFC); для shadow:true — внутри теневой строки без невидимых символов",
        +  "type": "integer"
        +}
    • Changedhumanizer_report7 fields changed
      • removedOutput schema / properties / counts
        Removed value: -{
        -  "properties": {
        -    "added": {
        -      "type": "integer"
        -    },
        -    "changed": {
        -      "type": "integer"
        -    },
        -    "lost": {
        -      "type": "integer"
        -    }
        -  },
        -  "required": [
        -    "lost",
        -    "added",
        -    "changed"
        -  ],
        -  "type": "object"
        -}
      • removedOutput schema / properties / diff
        Removed value: -{
        -  "properties": {
        -    "added": {
        -      "type": "array"
        -    },
        -    "changed": {
        -      "type": "array"
        -    },
        -    "lost": {
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "lost",
        -    "added",
        -    "changed"
        -  ],
        -  "type": "object"
        -}
      • addedOutput schema / properties / files / items / properties
        Added value: +{
        +  "after": {
        +    "type": "string"
        +  },
        +  "before": {
        +    "type": "string"
        +  },
        +  "edit_types": {
        +    "properties": {
        +      "casing": {
        +        "type": "integer"
        +      },
        +      "invisible": {
        +        "type": "integer"
        +      },
        +      "lexical": {
        +        "type": "integer"
        +      },
        +      "markup": {
        +        "type": "integer"
        +      },
        +      "punctuation": {
        +        "type": "integer"
        +      },
        +      "whitespace": {
        +        "type": "integer"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "facts": {
        +    "properties": {
        +      "added": {
        +        "description": "число добавленных фактов (аддитивное поле)",
        +        "type": "integer"
        +      },
        +      "changed": {
        +        "type": "integer"
        +      },
        +      "identical": {
        +        "description": "однозначный итог полного сравнения: нет ни потерь, ни добавлений, ни инверсий (аддитивное поле)",
        +        "type": "boolean"
        +      },
        +      "lost": {
        +        "type": "integer"
        +      },
        +      "unchanged": {
        +        "description": "нет потерь и изменений; добавления в это поле НЕ входят (семантика сохранена) — полный итог даёт identical",
        +        "type": "boolean"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "mtld": {
        +    "properties": {
        +      "after": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "before": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "sari_adapted": {
        +    "properties": {
        +      "add": {
        +        "type": "number"
        +      },
        +      "delete": {
        +        "type": "number"
        +      },
        +      "keep": {
        +        "type": "number"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "scope_note": {
        +    "description": "пояснение статуса out-of-scope по стороне пары (до/после)",
        +    "type": "string"
        +  },
        +  "status": {
        +    "description": "градуированный ответ на пустой/не-русский вход (graduated_response.out_of_scope); поле отсутствует, когда вход в области",
        +    "enum": [
        +      "out-of-scope"
        +    ],
        +    "type": "string"
        +  },
        +  "tokens": {
        +    "properties": {
        +      "add": {
        +        "type": "integer"
        +      },
        +      "delete": {
        +        "type": "integer"
        +      },
        +      "keep": {
        +        "type": "integer"
        +      }
        +    },
        +    "type": "object"
        +  }
        +}
      • addedOutput schema / properties / files / items / required
        Added value: +[
        +  "before",
        +  "after",
        +  "tokens",
        +  "sari_adapted",
        +  "edit_types",
        +  "facts",
        +  "mtld"
        +]
      • changedOutput schema / properties / files / items / type
        Previous value: -"string"New value: +"object"
      • changedOutput schema / properties / tool / enum
        Previous value: -[
        -  "humanizer-facts"
        -]New value: +[
        +  "humanizer-report"
        +]
      • changedOutput schema / required
        Previous value: -[
        -  "tool",
        -  "schema",
        -  "files",
        -  "counts",
        -  "diff"
        -]New value: +[
        +  "tool",
        +  "schema",
        +  "files"
        +]
  4. 6 tool updatesv0.1.0
    • First observedhumanizer_detect
    • First observedhumanizer_facts
    • First observedhumanizer_markers
    • First observedhumanizer_polish
    • First observedhumanizer_report
    • First observedhumanizer_scan

TDQS

A4.1/5.0

Scored across 7 tools

Disambiguation3/5

Tools have overlapping purposes: humanizer_clean, humanizer_markers, and humanizer_polish all deal with cleaning/normalizing text artifacts. Descriptions provide clarifications (e.g., clean for full cleanup, markers for detection of copy-paste marks, polish for typographic normalization), but the boundaries between them can still be confusing without careful reading.

Naming Consistency5/5

All tool names follow a consistent pattern: humanizer_ followed by a singular noun or verb (clean, facts, report, detect, markers, polish, scan). The prefix is uniform, and naming is predictable.

Tool Count5/5

7 tools is well within the typical 3-15 range and appears appropriate for the domain of text humanization/analysis, offering distinct functions like cleaning, fact-checking, reporting, detection, marker handling, polishing, and scanning.

Completeness4/5

The tool set covers key operations: cleaning, fact verification, reporting, detection, marker handling, typographic polishing, and scanning. However, there is no explicit tool for stylistic rewriting or authorship judgment (though these are intentionally excluded), and some functionality (e.g., marker removal) is only partially accessible via MCP. Minor gaps exist but core needs are met.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Detects and fixes LLM prose patterns in text, exposing tools for auditing and improving writing quality in MCP-compatible hosts.
    16 npm
    2
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Three deterministic MCP tools that score text for AI-writing tells (em-dash density, hedge words, tricolons, boilerplate openers) and grade landing-page copy. No LLM, no network calls, no API key — same input always yields the same score. Published on the official MCP registry as io.github.parweb/ai-slop-checker.
    3
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Zero-dependency stdio MCP server for token-aware prompt version diffs. Compare prompts or files and get machine-readable token delta reports with confidence labels.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Bilingual (EN/ES) AI-writing detection that shows the evidence instead of a percentage: named tells with line and column, hidden-character inspection, and citation cross-checking against a document's own bibliography. Seven of its nine tools run entirely locally and never touch the network.
    10
    27
    MIT