Moltline Humanizer
Find AI-isms with evidence and fingerprint a writing voice from samples. 3 of 5 free.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"humanizer": {
"url": "https://mcp.moltlinestudio.com/humanizer"
}
}
}Remote endpoints
https://mcp.moltlinestudio.com/humanizerstreamable-httpWhat it can do
Tool inventory
Tools (5)
🟢ai_tell_scan(text)
Scan a draft for the measurable tells of AI-generated prose. FREE. Flags stock phrases (with exact quotes), structural reflexes, uniform sentence rhythm, em-dash overuse, and hedging boilerplate — every flag cites the actual text. Typical input {"text": "<draft>"} returns {"reads_human_score": 0-100, "metrics": {"burstiness": ..., "avg_sentence_len": ..., ...}, "evidence": [{"type": "stock_phrase", "quote": "..."}], "note": "..."}. Use for a first read on whether a draft carries machine-writing signals. Reports measurable patterns, not a verdict on who wrote the text, and must not be used to accuse a person of anything. Not for rhythm detail (burstiness_report) or for a rewrite brief (humanize_plan). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "empty text"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The draft to scan — at least one full sentence of plain text."
}
},
"required": [
"text"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"additionalProperties": true
}🟢voice_fingerprint(samples, label)
Build a measurable voice profile from samples of a person's real writing. FREE. Feed it 2+ samples (emails, posts, essays — 150+ words total) and use the result with humanize_plan / verify_rewrite. Typical input {"samples": ["<email text>", "<blog post>"]} returns {"label": "my-voice", "target_metrics": {"avg_sentence_len": ..., "burstiness": ..., ...}, "favorite_words": [...], "signature_habits": ["..."], "words_analyzed": N}. Use on samples the person actually wrote, to build a target profile. Not for scoring an unknown draft (ai_tell_scan) and not on text the person did not write. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "need 150+ words of real writing across the samples"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
Input Schema
{
"type": "object",
"properties": {
"samples": {
"items": {
"type": "string"
},
"type": "array",
"description": "List of real writing samples by the same person; 150+\nwords combined across all samples."
},
"label": {
"default": "my-voice",
"type": "string",
"description": "Optional name for this voice profile. Default \"my-voice\"."
}
},
"required": [
"samples"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"additionalProperties": true
}🟢burstiness_report(text)
Map a draft's sentence rhythm and find where it goes flat. FREE. Reports per-sentence lengths, the burstiness coefficient, and runs of similar-length sentences. Typical input {"text": "<draft>"} returns {"sentence_lengths": [12, 14, 13, 5, 28], "burstiness": 0.52, "flat_runs": [{"sentences": "1-3", "lengths": [12, 14, 13]}], "tip": "..."}. Use when prose reads flat and sentence-length pattern is the suspect. Not for a full inventory of tells (ai_tell_scan). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "need 3+ sentences"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The draft to analyze; needs at least 3 sentences."
}
},
"required": [
"text"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"additionalProperties": true
}🟢humanize_plan(text, fingerprint)
Produce a precise rewrite brief that de-AIs a draft, with numeric targets. PREMIUM (license). Lists every flagged tell with its fix and sentence-rhythm surgery targets; when a voice_fingerprint result is supplied, adds numeric targets to hit that person's voice. Apply the brief with your agent, then confirm with verify_rewrite. Typical input {"text": "<draft>", "fingerprint": <voice_fingerprint result>} returns {"current_score": 0-100, "edit_list": ["..."], "numeric_targets": {...}, "process": ..., "integrity_note": ...}. Use after a scan has identified what to fix; returns a brief, not rewritten prose. Not for checking whether a rewrite worked (verify_rewrite). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
Input Schema
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The AI draft to plan a rewrite for."
},
"fingerprint": {
"additionalProperties": true,
"default": null,
"type": "object",
"description": "Optional voice profile object exactly as returned by\nvoice_fingerprint; omit for a style-only pass."
}
},
"required": [
"text"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"additionalProperties": true
}🟢verify_rewrite(original, rewrite, fingerprint)
Verify a rewrite actually improved: score delta, meaning check, voice distance. PREMIUM (license). Compares reads-human score before/after, a meaning-preservation proxy, and (with a fingerprint) numeric distance to the target voice. Typical input {"original": "<draft>", "rewrite": "<edited draft>"} returns {"score_before": N, "score_after": N, "score_delta": N, "content_word_retention_pct": N, "remaining_tells": [...], "verdict": "Improved — ship it" | "Marginal — ..."}. Use only when both the before and the after text are available. Not for scoring a single draft (ai_tell_scan). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "both texts must be non-empty"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
Input Schema
{
"type": "object",
"properties": {
"original": {
"type": "string",
"description": "The draft before editing."
},
"rewrite": {
"type": "string",
"description": "The same content after the humanize_plan edits."
},
"fingerprint": {
"additionalProperties": true,
"default": null,
"type": "object",
"description": "Optional voice profile object exactly as returned by\nvoice_fingerprint, to measure distance to the target voice."
}
},
"required": [
"original",
"rewrite"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"additionalProperties": true
}Community
Evidence