humanpen-mcp
OfficialThe humanpen-mcp server provides document processing tools to humanize, fix citations, condense, and translate documents, as well as read AI detection reports and manage jobs, with credit-based billing. Key capabilities:
Humanize documents: Rewrite
.docxor.pptxfiles to lower AI detection scores. Optionally provide a Turnitin/iThenticate report to target only flagged passages, with intensity settings (conservative, balanced, aggressive). Free re-humanization is available if the document is still flagged—submit a new report and re-process at no cost (subject to daily cap).Fix citations: Convert citation styles in
.docxfiles to APA 7, MLA 9, Harvard, Chicago, IEEE, Vancouver, GB/T 7714, AMA, ACS, OSCOLA, etc., without altering body text.Condense: Shorten
.docxfiles to a specified word count while preserving meaning and structure.Translate: Translate various formats (
.docx,.pdf,.pptx,.xlsx,.epub,.html,.txt) between 12 languages: Chinese, English, Japanese, Korean, Spanish, French, Portuguese, Russian, German, Polish, Italian, Traditional Chinese, preserving layout, tables, images, and formulas.Read AI detection reports: Parse Turnitin/iThenticate PDFs to extract overall AI percentage and flagged passages (free).
Check job status: Look up a job by ID and retrieve its result.
Check credit balance: View remaining credits. Credits are charged at 100 per 1,000 words (minimum 10) for document-processing tasks; detection report reading and job status checks are free.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@humanpen-mcpHumanize my document to reduce AI detection score."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
humanpen-mcp
Website · Pricing · Developer docs
Keywords: ai humanizer, mcp server, model context protocol, turnitin ai detection, reduce ai score, humanize ai text, bypass ai detection, docx ai humanizer, ai content rewriter, ai writing tool, claude mcp, cursor mcp, ithenticate ai report
Humanize what's flagged. Preserve the rest. An MCP server for HumanPen — a document-level AI humanizer that can humanize an entire document, rewrite user-selected passages, or automatically target flagged text from a Turnitin / iThenticate AI-detection report, editing .docx / .pptx files in place while preserving formatting, tables, images, citations, and formulas. Also converts citations between 12 styles, condenses to a word budget, and translates between 12 languages.
claude mcp add humanpen -s user -e HUMANPEN_API_KEY=hp_your_key -- npx -y humanpen-mcpFeatures
Selective rewriting by detection report — import a Turnitin / iThenticate AI Writing Report to pinpoint flagged passages; unflagged content is never touched
Format in, format out — a DOCX comes back as a DOCX, a PPTX as a PPTX; formatting, tables, images, and formulas survive intact and the result is still editable
Academic structure preserved — in-text citations, reference lists, footnotes, TOC fields, cross-references, figure numbering, equations, and special formatting are treated as protected objects
No error injection — restructures meaning and syntax to change expression; never adds grammar mistakes, spelling errors, or awkward sentences as a detection strategy
Full-length documents — no per-input word limit; a single file can be up to 100 MB, no splitting into text boxes
Free to keep going — still flagged? Re-humanize for free with a fresh report until the AI rate falls to
*or 0%Word-count control (experimental) — set a min/max word range to keep the output within a target length
Pay per rewrite — billed on words actually changed, not the whole document; failed and cancelled jobs cost nothing; credits never expire
Related MCP server: docx-forge-mcp
Get a key
Sign up at https://humanpen.net and create a key at https://humanpen.net/settings/api-keys. New accounts start with free credits, enough to put a document through and see what comes back.
The key goes in an environment variable, never in a URL. URLs end up in server logs, proxy logs, shell history and screenshots.
Install
claude mcp add humanpen -s user -e HUMANPEN_API_KEY=hp_your_key -- npx -y humanpen-mcp-s user puts it in every project. The default scope is local, which
loads the server only in the directory you ran the command from — and looks
like a broken install the first time you open Claude Code somewhere else.
If your version rejects -e (reported
upstream), use the JSON
form:
claude mcp add-json humanpen -s user '{"command":"npx","args":["-y","humanpen-mcp"],"env":{"HUMANPEN_API_KEY":"hp_your_key"}}'In ~/.codex/config.toml:
[mcp_servers.humanpen]
command = "npx"
args = ["-y", "humanpen-mcp"]
env = { HUMANPEN_API_KEY = "hp_your_key" }codebuddy mcp add --scope user humanpen -- npx -y humanpen-mcpIt also reads ${VAR} in its config, so the key can stay in your environment
instead of the file:
{ "mcpServers": { "humanpen": {
"command": "npx", "args": ["-y", "humanpen-mcp"],
"env": { "HUMANPEN_API_KEY": "${HUMANPEN_API_KEY}" }
} } }~/.codebuddy/.mcp.json for every project, <project>/.mcp.json for one.
It has gemini mcp add, but the argument order differs between versions — run
gemini mcp add --help and follow the usage line it prints. Pass the key with
-e HUMANPEN_API_KEY=... and the scope with -s user; the default is
project, which is only the directory you ran it in.
In claude_desktop_config.json. Use the absolute path to npx — run
which npx and paste the result: a desktop app is launched by the OS with a
minimal PATH, so the bare name that works in your terminal often is not found
here, and the only symptom is that the tools never appear.
{
"mcpServers": {
"humanpen": {
"command": "npx",
"args": ["-y", "humanpen-mcp"],
"env": { "HUMANPEN_API_KEY": "hp_your_key" }
}
}
}All three read the same shape — Cursor in .cursor/mcp.json, Windsurf in
~/.codeium/windsurf/mcp_config.json, Cline in its MCP settings panel:
{
"mcpServers": {
"humanpen": {
"command": "npx",
"args": ["-y", "humanpen-mcp"],
"env": { "HUMANPEN_API_KEY": "hp_your_key" }
}
}
}In opencode.json — the key names differ slightly from everyone else's:
{
"mcp": {
"humanpen": {
"type": "local",
"command": ["npx", "-y", "humanpen-mcp"],
"environment": { "HUMANPEN_API_KEY": "hp_your_key" }
}
}
}{
"mcp": {
"inputs": [
{ "type": "promptString", "id": "humanpenKey", "description": "HumanPen API key", "password": true }
],
"servers": {
"humanpen": {
"command": "npx",
"args": ["-y", "humanpen-mcp"],
"env": { "HUMANPEN_API_KEY": "${input:humanpenKey}" }
}
}
}
}VS Code prompts once and stores the key in its secret store, so it never lands in a file you might commit.
git clone https://github.com/humanpen/humanpen-mcp
cd humanpen-mcp && npm install && npm run buildThen point your client at node /path/to/humanpen-mcp/dist/index.js instead of
npx -y humanpen-mcp.
Any MCP client works: this is a plain stdio server started by
npx -y humanpen-mcp with HUMANPEN_API_KEY in its environment.
Tools
Tool | What it does | Credits |
| Rewrite a | yes |
| Continue a finished | free |
| Convert in-text citations and the reference list to APA 7, MLA 9, Harvard, Chicago, IEEE, Vancouver, GB/T 7714, AMA, ACS or OSCOLA. Body text untouched. | yes |
| Shorten a | yes |
| Translate | yes |
| Read a Turnitin or iThenticate AI Writing report: overall AI percentage and the flagged passages. | free |
| Look up a job and download its result. | free |
| Credits remaining. | free |
Two things worth knowing
Jobs take minutes; tool calls do not. Each operation waits about 55 seconds
— enough for most documents — then returns a job_id with a note to call
check_job. The work continues on the server either way; nothing is lost by the
tool returning early.
ai_percent can be null, and that is usually good news. Turnitin prints
* instead of a number whenever AI writing comes in under 20% — it will not
quantify that band, because too much of it is false positives. So null means
"under 20%, and Turnitin will say no more", never "0%" and never "no result".
Questions people ask
Will this bring a Turnitin AI score down?
Usually under 20% in one pass with balanced — the threshold below which
Turnitin prints * instead of a number. If it misses, hand the result back with
the new report; only the passages still flagged get rewritten.
Does it work with iThenticate too? Yes — pass either report. The format is read from the file.
Is my document sent to the model? No. It uploads the file and answers with a path. A 40-page paper costs no tokens.
Privacy Policy
Documents you pass to a tool are uploaded over HTTPS to HumanPen's API
(api.humanpen.net) for processing; results are written back to your disk, and
processed files are kept server-side for about 7 days so check_job and the
free re-humanize pass can find them. Document contents never enter the model's
context. The full policy — what is collected, retention, and how to reach us —
is at https://humanpen.net/legal/privacy.
Development
npm install
npm run build
HUMANPEN_API_KEY=hp_... node selftest.mjs sample.docx report.pdfselftest.mjs spawns the built server and talks JSON-RPC to it over stdio the
way a real client does — proving the protocol, the tool registrations, stdout
hygiene and one end-to-end job, not merely that the functions return. It needs a
live key and spends credits, so it is a pre-release check rather than a CI step.
Links
humanpen-skill — the same operations as an Agent Skill, if you would rather not run a server
Apache-2.0
Available Tools
8 toolscheck_jobCheck a jobA
Look up a job by id, and download its result if it has finished. Use this after a tool returned before the job was done.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The job id an earlier call returned | |
| output_path | No | Where to write the result | |
| document_path | No | The original document, so a downloaded result can be named after it |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears full responsibility for behavioral disclosure. It mentions downloading if finished, but does not describe behavior when the job is not finished (e.g., polling, error, status return), whether it blocks, or side effects like writing to the file system without clarity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and contains no wasted words. It is concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description provides the core purpose and usage but omits important behavioral details such as non-finished job behavior, error handling, and whether output_path is mandatory for downloads. It is adequate but has clear gaps for an async job tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and all parameters have descriptions, so the baseline is 3. The description adds context about downloading results and usage timing but does not add significant semantic detail beyond what the schema already provides for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool looks up a job by ID and downloads the result if finished, which is specific and distinguishes it from the sibling tools that operate on documents. The verb 'look up' and resource 'job by id' are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'Use this after a tool returned before the job was done.' It does not explicitly mention alternatives or when not to use it, but the given guidance is sufficient for typical async job polling scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
condense_documentCondense a documentA
Shorten a .docx to a target word count, keeping meaning, structure and citations. Saves the result next to the source and returns its path. COSTS CREDITS at 100 per 1,000 words processed (10 minimum) - say so and get agreement first.
| Name | Required | Description | Default |
|---|---|---|---|
| max_words | Yes | Target word count for the whole document | |
| output_path | No | Where to write the result; defaults to beside the source | |
| instructions | No | Extra requirements for this job | |
| wait_seconds | No | How long to wait before returning a job id (default 55) | |
| document_path | Yes | Absolute path to the .docx |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses cost structure (100 per 1,000 words, 10 minimum), the need for user agreement, output location ('Saves the result next to the source'), and return value ('returns its path'). This is meaningful behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences that are direct and information-dense: function, output behavior, and cost/consent. No filler words or redundant restatement of the title. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description claims 'returns its path', but the schema includes a wait_seconds parameter that 'return[s] a job id', implying asynchronous behavior. The description does not explain when a path vs. a job id is returned, nor does it mention the sibling check_job tool for tracking. This is a significant gap for effective tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds context around output_path (saves next to source) and max_words (target word count), but it does not elaborate on individual parameter syntax or edge cases. It meets the baseline but does not significantly exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Shorten a .docx to a target word count', naming the verb (Shorten), resource (.docx), and key constraint (target word count). This distinguishes it from siblings like humanize_document or translate_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (to condense a document) and includes a critical usage guideline: 'COSTS CREDITS... say so and get agreement first.' It does not explicitly mention alternatives, but the context is clear and it provides a behavioral requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fix_citationsConvert citation formatA
Rewrite a .docx's in-text citations and reference list into one target style, leaving the body text alone. Saves the result next to the source and returns its path. COSTS CREDITS at 100 per 1,000 words processed (10 minimum) - say so and get agreement first.
| Name | Required | Description | Default |
|---|---|---|---|
| style | Yes | Target style: apa7, mla9, harvard, chicago_author_date, chicago_notes, ieee, vancouver, gbt7714, gbt7714_author_year, ama, acs, or oscola | |
| output_path | No | Where to write the result; defaults to beside the source | |
| instructions | No | Extra requirements for this job | |
| wait_seconds | No | How long to wait before returning a job id (default 55) | |
| document_path | Yes | Absolute path to the .docx |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses meaningful behaviors: it modifies only citations (leaves body text alone), saves the result next to the source (non-destructive), returns the path, and costs credits at a specific rate. However, it does not disclose the asynchronous job-id behavior implied by the wait_seconds schema parameter, which is a minor transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a distinct purpose: the main action, the output behavior, and the cost/consent requirement. It is front-loaded with the core functionality and has no redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core action, output location, return path, and cost, but it omits important context about the asynchronous nature of the tool (job id vs. path) and potential error conditions, which are not captured in an output schema. Given the existence of a parameter like wait_seconds and a sibling check_job, the description could be clearer about the execution model to avoid agent misinterpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all 5 parameters with 100% coverage, including allowed styles and the default behavior for output_path. The description adds no new parameter-specific details; it only restates the style rewrite behavior and output location, which are already in the schema. Therefore, the description provides marginal added value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Rewrite' to target '.docx's in-text citations and reference list' with an outcome 'into one target style'. It explicitly says 'leaving the body text alone', which scopes the operation precisely. This clearly distinguishes it from sibling tools like humanize_document or translate_document, which handle broader text transformations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating the exact function: rewriting citations into a target style. It doesn't explicitly name alternatives or exclusions, but the focus on citations and reference lists provides clear context for when to select this tool over siblings. It also includes an operational guideline about securing user agreement due to credit costs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
free_rehumanizeRe-humanize a job's still-flagged passages for freeA
Continue a finished humanize job for FREE. Upload a fresh detection report for that job's result; only the passages it still flags are rewritten, at no credit cost. The server enforces strict limits: one free continuation per job, a per-day cap, the report must be of THAT job's own result (>=90% match) and show >=20% AI, and the result must still exist (kept ~7 days). If a limit is not met it returns a clear reason - relay it and stop; do not retry or silently fall back to a paid job. Pass the job_id a prior humanize_document (or check_job) returned.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The finished humanize job to continue (its job_id from humanize_document/check_job) | |
| segments | No | Per-passage word control for the still-flagged passages (optional), same shape and experimental caveat as humanize_document.segments | |
| output_path | No | Where to write the result; defaults to beside the report | |
| report_path | Yes | Absolute path to the fresh Turnitin/iThenticate report for that job's result | |
| instructions | No | Extra requirements for this job | |
| wait_seconds | No | How long to wait before returning a job id (default 55) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses server-side constraints: one free continuation per job, per-day cap, required >=90% match, >=20% AI in the report, and that results are kept ~7 days. It also explains error handling and prohibits retries/fallback, making behavior highly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately lengthy but every sentence contributes essential information (free nature, limits, error behavior, no-fallback rule). It is front-loaded with the core purpose, making it easy to parse despite the detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no annotations, and no output schema, the description covers the tool's core behavior, constraints, and error handling well. It omits explicit return-value information, but since no output schema exists, this is not strictly required. It is adequately complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for all six parameters, so the baseline is 3. The description adds minimal semantic value beyond the schema; it mentions passing job_id from a prior humanize_document/check_job, but the schema already states this. Optional parameters are not elaborated in the description, though the schema covers them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool continues a finished humanize job for free, rewrites only still-flagged passages, and is distinct from the paid sibling humanize_document. It also includes the directive not to fall back to a paid job, which further distinguishes it from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: use after a finished humanize job with a fresh detection report. It includes when-not-to (do not retry or silently fall back to a paid job) but does not explicitly name alternative tools like check_job for status checks, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_credit_balanceCheck the credit balanceA
How many credits the account has. 1,000 words costs 100 credits, charged on the words actually processed, with a 10-credit minimum per job. Worth checking before a large document.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. 'How many credits the account has' implies a read-only query with no side effects. It also adds useful context about the credit system (charges per 1,000 words and 10-credit minimum), which helps the agent judge when to check. It does not mention return format, but for a simple balance check this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loaded. The first sentence states exactly what the tool does. The second sentence provides relevant cost information and a usage tip, earning its place. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple tool with no parameters and no output schema. The description fully covers its purpose, provides usage guidance, and gives background on credit consumption. The sibling tools are all credit-consuming operations, so the 'before a large document' tip is sufficient contextual guidance. Nothing important is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is 100% by default. The baseline for 0 params is 4. The description adds value by explaining the credit cost model, which gives context for interpreting the balance, even though it is not parameter-specific.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'How many credits the account has.' This is a specific read operation with a clear resource (credit balance). It is distinct from all sibling tools, which perform document operations or job checks, so there is no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context: 'Worth checking before a large document.' This signals when to use the tool relative to the credit-consuming sibling tools. It does not explicitly name alternatives or exclusions, but the context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
humanize_documentHumanize a documentA
Rewrite a .docx or .pptx so it reads as human-written and scores lower on AI detectors, keeping meaning, citations, tables and layout. Optionally pass a Turnitin/iThenticate AI report to rewrite only the passages it flagged. If a fresh report still flags the result, run this tool again on the rewritten file with that new report - only the still-flagged passages are touched, and balanced remains the right strategy for the second pass. Saves the result next to the source and returns its path. COSTS CREDITS at 100 per 1,000 words processed (10 minimum) - say so and get agreement first.
| Name | Required | Description | Default |
|---|---|---|---|
| segments | No | Per-passage word control (optional): each item is a flagged passage plus its own min_words/max_words. Get the passage texts from read_detection_report and pass report_path alongside so the report defines scope. Experimental, same caveat as min_words. Cannot combine with the whole-document min_words/max_words. | |
| strategy | No | Rewriting intensity; balanced is the usual first choice, aggressive rewrites more heavily | |
| max_words | No | Upper word bound for the rewritten document (optional; omit for no limit). Same experimental caveat and exclusivity as min_words. | |
| min_words | No | Lower word bound for the rewritten document (optional; omit for no limit). Experimental - a word limit noticeably weakens AI-rate reduction, so omit unless the user requires a length. Cannot combine with report_path or segments. | |
| output_path | No | Where to write the result; defaults to beside the source | |
| report_path | No | Path to a Turnitin/iThenticate AI report PDF; only its flagged passages are rewritten | |
| instructions | No | Extra requirements for this job | |
| wait_seconds | No | How long to wait before returning a job id (default 55) | |
| document_path | Yes | Absolute path to the .docx or .pptx to rewrite |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden and does so exceptionally. It discloses cost (100 credits per 1000 words), the iterative behavior with re-runs, that only flagged passages are touched when a report is provided, output saving next to the source, and the returned path. This is far beyond the bare minimum and gives agents clear expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is about four sentences long, starts with the core purpose, and every sentence adds a distinct piece of information: main functionality, optional report usage, iterative re-run guidance, and cost warning. There is no redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 9 parameters and no output schema, the description covers all essential context: main use case, optional report integration, re-run strategy, file type constraints, output path behavior, and cost. Combined with the fully described schema, this gives an agent everything needed to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented, but the description adds contextual meaning beyond schema by explaining the strategy choice (balanced vs aggressive) for first and second passes, the purpose of report_path, and the default output behavior. It also ties the re-run guidance to the strategy and report parameters, helping agents make informed choices.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool rewrites .docx or .pptx files to read as human-written and lower AI detection scores, while preserving meaning, citations, tables, and layout. This specific verb+resource scope distinguishes it from sibling tools like condense_document or translate_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains when to use the tool, including the option to pass a Turnitin/iThenticate report to rewrite only flagged passages, and advises re-running with balanced strategy if a fresh report still flags results. It does not explicitly contrast with alternatives, but the guidance implies the primary use case and iterative workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_detection_reportRead an AI-detection reportA
Read a Turnitin or iThenticate AI Writing report PDF: returns the overall AI percentage and the flagged passages. Free - reads the file without starting a job. Pass the same report to humanize_document to rewrite only what was flagged.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Which product exported it; omit to identify it from the file | |
| report_path | Yes | Absolute path to the report PDF | |
| include_segments | No | Include the flagged passage texts, which can be long (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the operation is free, does not start a job, and returns the AI percentage and flagged passages – key behavioral traits for a read-only tool. It could add more about error handling or output format, but the core transparency is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the purpose and outputs. The second sentence adds cost and chaining guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with 3 parameters and no output schema, the description explains the return values (AI percentage and flagged passages), the cost/free behavior, and connects to humanize_document. This is sufficient for an agent to decide and invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters already have descriptions. The tool description does not add further parameter-level meaning beyond mentioning flagged passages (which relates to include_segments). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Read a Turnitin or iThenticate AI Writing report PDF: returns the overall AI percentage and the flagged passages' – a specific verb with a clear resource and output. It also distinguishes itself from humanize_document by referencing it as a separate rewrite tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Free - reads the file without starting a job', establishing a clear when-to-use justification. It also directs the user to 'Pass the same report to humanize_document to rewrite only what was flagged', an explicit alternative for the next step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translate_documentTranslate a documentB
Translate a document into another language while keeping its layout, tables, images and formulas. Takes .docx, .pdf, .pptx, .xlsx, .epub, .html and .txt. Saves the result next to the source and returns its path. COSTS CREDITS at 100 per 1,000 words processed (10 minimum) - say so and get agreement first.
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | No | Where to write the result; defaults to beside the source | |
| source_lang | No | Source language, or auto to detect it (the default) | |
| target_lang | Yes | Target language: zh, en, zh-tw, ja, ko, es, fr, pt, ru, de, pl or it | |
| wait_seconds | No | How long to wait before returning a job id (default 55) | |
| document_path | Yes | Absolute path to the document |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses useful behaviors like saving next to the source, returning the path, and credit costs. However, it contradicts the input schema's wait_seconds parameter, which mentions returning a job ID. This creates ambiguity about whether the tool runs synchronously or asynchronously, a critical behavioral trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose, supported formats, output/cost behavior. Front-loaded, scannable, and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must clarify return values and job behavior. The 'returns its path' statement conflicts with the job-id mention in wait_seconds, and the existence of sibling check_job implies asynchronous processing. Missing details on failure modes or polling make it incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds marginal value. It does add supported-formats context beyond the schema, but fails to reconcile the wait_seconds behavior described in the schema, leaving potential confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool translates a document into another language while preserving layout, tables, images, and formulas. It also lists supported file formats, which distinctly separates it from sibling tools like condense_document or humanize_document.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context by listing accepted formats and requires credit-cost agreement before use, implying when it should be used for document translation. However, it never explicitly mentions alternatives or when not to use this tool, leaving the choice versus sibling tools implicit.
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. Dates show when Glama detected each change.
2 tool updates
v1.4.0- Added
free_rehumanize - Changed
humanize_document5 fields changed- added
Input schema / properties / max_wordsAdded value: +{ + "description": "Upper word bound for the rewritten document (optional; omit for no limit). Same experimental caveat and exclusivity as min_words.", + "exclusiveMinimum": 0, + "type": "integer" +} - added
Input schema / properties / min_wordsAdded value: +{ + "description": "Lower word bound for the rewritten document (optional; omit for no limit). Experimental - a word limit noticeably weakens AI-rate reduction, so omit unless the user requires a length. Cannot combine with report_path or segments.", + "exclusiveMinimum": 0, + "type": "integer" +} - added
Input schema / properties / segmentsAdded value: +{ + "description": "Per-passage word control (optional): each item is a flagged passage plus its own min_words/max_words. Get the passage texts from read_detection_report and pass report_path alongside so the report defines scope. Experimental, same caveat as min_words. Cannot combine with the whole-document min_words/max_words.", + "items": { + "additionalProperties": false, + "properties": { + "max_words": { + "description": "Upper word bound for this passage once rewritten", + "exclusiveMinimum": 0, + "type": "integer" + }, + "min_words": { + "description": "Lower word bound for this passage once rewritten", + "exclusiveMinimum": 0, + "type": "integer" + }, + "text": { + "description": "The exact flagged passage text to bound", + "minLength": 1, + "type": "string" + } + }, + "required": [ + "text" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" +} - changed
Input schema / properties / strategy / descriptionPrevious value: -"Rewriting intensity; balanced is the usual first choice"New value: +"Rewriting intensity; balanced is the usual first choice, aggressive rewrites more heavily" - changed
Input schema / properties / strategy / enumPrevious value: -[ - "conservative", - "balanced", - "aggressive", - "balanced_v2", - "aggressive_v2" -]New value: +[ + "balanced", + "aggressive" +]
7 tool updates
v1.0.0- First observed
check_job - First observed
condense_document - First observed
fix_citations - First observed
get_credit_balance - First observed
humanize_document - First observed
read_detection_report - First observed
translate_document
TDQS
Each tool targets a distinct operation: humanizing, job checking, free continuation, citation fixing, condensing, translating, report reading, and credit balance. Even humanize_document and free_rehumanize are clearly separated by free continuation logic. No ambiguity in purpose.
Tool names follow a consistent verb_noun pattern (e.g., humanize_document, check_job, fix_citations). The only deviation is free_rehumanize, which starts with an adjective rather than a verb, but it is still understandable and not chaotic.
Eight tools is well within the ideal range for a document processing server. Each tool either performs a distinct document transformation, manages job lifecycle, or provides necessary account information, with no extraneous entries.
The server covers the core document processing lifecycle: create jobs (humanize, fix citations, condense, translate), check job status, retrieve results, and even a free continuation path. Minor gaps like listing all jobs or cancelling jobs exist, but agents can work around these using check_job.
Maintenance
Related MCP Connectors
Document-to-Markdown MCP server — convert PDF, Office and HTML into LLM-ready Markdown.
Walter Remote MCP Server — AI humanization and detection tools
An agent-first office suite Claude & ChatGPT read and write over one MCP URL.
DocBase MCP server for AI agents
Related MCP Servers
- AlicenseAqualityNot gradedmaintenanceAn MCP server that enables AI agents to instantly convert Markdown into beautiful, ready-to-deliver Word, PDF, HTML with sidebars, and Slideshow documents, bridging the "last mile" of AI content generation.7281-
- AlicenseAqualityDmaintenanceMCP server for Word document (.docx) creation and manipulation — the production-grade document automation tool for AI agents.963MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables LLM agents to read, understand, and fill DOCX templates while preserving formatting like bold labels and fonts. It exposes tools for document upload, AST inspection, editing, and validation.MIT
- FlicenseNot gradedqualityCmaintenanceMCP server that provides document conversion and processing tools, enabling AI assistants to handle document formats through natural language.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/humanpen/humanpen-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server