Make AI sound like you. A local-first MCP server that learns your writing voice and rewrites AI-generated drafts in it.
HumanifyMe demonstrates solid tool design with consistent naming patterns (verb_noun), comprehensive parameter descriptions, and proper Zod-based schema validation. All 16 tools have descriptions and input schemas. However, output schemas are not explicitly documented in the visible code, only input validation is enforced via Zod. Error handling is well-structured (toHumanifyError mapping to closed codes) but lacks recovery guidance in error messages. Tool composition is clean (single responsibility per tool), and security practices are sound (API keys via keyring, no secrets in params). Main gaps: output schema documentation, error messages missing actionable recovery steps, and some parameter descriptions could be more prescriptive about constraints.
Add a writing sample to build the voice profile
List recent audit log entries
Build or rebuild the voice profile from current samples
Delete the voice profile
Delete a writing sample by ID
Get the current voice profile
Import writing samples from a ChatGPT or Claude export
Import writing samples from text, markdown, or DOCX files
Output schemas not explicitly documented. Only input schemas are validated via Zod; return types are not formally declared in tool definitions. LLMs cannot reliably predict response structure for downstream planning.
Error messages lack recovery guidance. toHumanifyError maps to closed codes (code, message, retryable) but does not suggest next steps. E.g., 'Invalid feedback signal' should suggest 'Valid values: sounds_like_me, not_quite, needs_work'.
Destructive tools (humanify_delete_sample, humanify_delete_profile, humanify_wipe_all) lack confirmation or dry-run support. Agents can permanently delete data without a safety gate.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2025-06-18+ | v2 |
List all stored writing samples
Get validation metrics on the voice profile quality
Record user feedback on a rewrite (did it sound like you?)
Configure an LLM provider (Anthropic, OpenAI, Gemini, or Ollama)
Test the configured provider API key
Rewrite a draft in the user's voice using learned style profile and directives
Manually update the voice profile JSON
Wipe all data (samples, profile, cache, audit log)
Parameter constraints not fully specified in descriptions. E.g., humanify_add_sample requires 'minimum 100 characters' but this is not stated in the description text, only in code validation. LLMs cannot read code constraints.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) not declared in tool registration. Risk field is documented in metadata but not exposed to MCP protocol.