Idiolect AI
Server Details
Loads your personal writing voice into any AI and scores how closely a draft matches it.
Glama couldn't complete the latest health check. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- moshpit-labs/idiolect-mcp
- GitHub Stars
- 0
- Server Listing
- idiolect-mcp
TDQS
Scored across 2 tools
The two tools are clearly distinct: 'write' creates new text while 'rewrite' modifies supplied prose. Each description explicitly states the different input and purpose, leaving no ambiguity about which tool to select.
Both tool names are single lowercase verbs that form a natural pair: write and rewrite. The naming is simple, predictable, and consistent in style.
Two tools feel minimal for a writing assistant, but the server's scope is tightly focused on generating and revising text. It is borderline rather than severely underprovisioned.
The core creation and revision workflows are covered, and the integrated profile shortfall mechanism handles personalization. A minor gap is the lack of any tool to manage or inspect the writing profile directly, but agents can work around it.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
16 tool updates
- Removed
add_samples_to_writing_profile - Removed
create_my_voice - Removed
create_writing_profile - Removed
delete_writing_profile - Removed
draft_in_voice - Removed
get_my_voice - Removed
list_writing_profile_samples - Removed
list_writing_profiles - Removed
record_voice_feedback - Removed
remove_sample_from_writing_profile - Removed
replace_samples_in_writing_profile - Added
rewrite - Removed
rewrite_in_voice - Removed
score_voice - Removed
set_current_writing_profile - Added
write
1 tool update
- Changed
create_my_voice1 field changed- changed
Input schema / properties / samples / descriptionPrevious value: -"Distinct blocks of writing supplied or explicitly approved by the user."New value: +"Distinct, natural blocks of writing the user actually authored. Approval alone does not establish authorship; exclude prompts and AI-written text."
1 tool update
- Changed
record_voice_feedback4 fields changed- removed
Output schema / properties / feedbackRemoved value: -{ - "enum": [ - "accepted", - "corrected_and_accepted", - "rejected" - ], - "type": "string" -} - removed
Output schema / properties / learnedRemoved value: -{ - "type": "boolean" -} - added
Output schema / properties / needsFinalTextAdded value: +{ + "type": "boolean" +} - changed
Output schema / requiredPrevious value: -[ - "state", - "message", - "next", - "feedback", - "learned" -]New value: +[ + "state", + "message", + "next", + "needsFinalText" +]
1 tool update
- Changed
record_voice_feedback2 fields changed- changed
Input schema / properties / critique / maxLengthPrevious value: -2000New value: +20000 - changed
Input schema / properties / status / enumPrevious value: -[ - "accepted", - "corrected_and_accepted", - "rejected" -]New value: +[ + "accepted", + "corrected_and_accepted", + "rejected", + "normal" +]
1 tool update
- Changed
record_voice_feedback4 fields changed- changed
Input schema / properties / correctionText / descriptionPrevious value: -"The complete final text the user actually used after correcting the output. Never send an excerpt, summary, or diff."New value: +"The user's final text, verbatim and complete. Never an excerpt, a diff, or your own description of what changed — if you do not have their exact words, omit this field and describe the change in critique instead." - added
Input schema / properties / critique / descriptionAdded value: +"What you observed about how the output landed, in the user's words or your own: what was wrong, what they changed, or why they kept it. Free text, and the right home for any description of an edit you cannot quote verbatim." - removed
Input schema / properties / permissionToLearnRemoved value: -{ - "type": "boolean" -} - changed
Input schema / requiredPrevious value: -[ - "outputId", - "status", - "permissionToLearn" -]New value: +[ + "outputId", + "status" +]
5 tool updates
- Changed
create_my_voice2 fields changed- added
Output schema / properties / errorAdded value: +{ + "additionalProperties": false, + "properties": { + "code": { + "enum": [ + "insufficient_credits", + "credit_accounting_unavailable", + "local_llm_budget_exhausted" + ], + "type": "string" + }, + "retryable": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "code", + "retryable" + ], + "type": "object" +} - changed
Output schema / properties / status / enumPrevious value: -[ - "ready", - "more_evidence_required", - "build_in_progress", - "failed" -]New value: +[ + "ready", + "more_evidence_required", + "build_in_progress", + "failed", + "rate_limited" +]
- Changed
draft_in_voice2 fields changed- changed
Output schema / properties / error / properties / code / enumPrevious value: -[ - "insufficient_credits", - "credit_accounting_unavailable" -]New value: +[ + "insufficient_credits", + "credit_accounting_unavailable", + "local_llm_budget_exhausted" +] - changed
Output schema / properties / status / enumPrevious value: -[ - "ready", - "setup_required", - "purchase_required", - "accounting_unavailable" -]New value: +[ + "ready", + "setup_required", + "purchase_required", + "accounting_unavailable", + "rate_limited" +]
- Added
list_writing_profile_samples - Changed
rewrite_in_voice2 fields changed- changed
Output schema / properties / error / properties / code / enumPrevious value: -[ - "insufficient_credits", - "credit_accounting_unavailable" -]New value: +[ + "insufficient_credits", + "credit_accounting_unavailable", + "local_llm_budget_exhausted" +] - changed
Output schema / properties / status / enumPrevious value: -[ - "ready", - "setup_required", - "purchase_required", - "accounting_unavailable" -]New value: +[ + "ready", + "setup_required", + "purchase_required", + "accounting_unavailable", + "rate_limited" +]
- Changed
score_voice2 fields changed- added
Output schema / properties / errorAdded value: +{ + "additionalProperties": false, + "properties": { + "code": { + "enum": [ + "insufficient_credits", + "credit_accounting_unavailable", + "local_llm_budget_exhausted" + ], + "type": "string" + }, + "retryable": { + "enum": [ + true + ], + "type": "boolean" + } + }, + "required": [ + "code", + "retryable" + ], + "type": "object" +} - changed
Output schema / properties / status / enumPrevious value: -[ - "ready", - "setup_required" -]New value: +[ + "ready", + "setup_required", + "rate_limited" +]
1 tool update
- Changed
rewrite_in_voice1 field changed- changed
Input schema / properties / targetRegister / enumPrevious value: -[ - "email", - "slack", - "essay" -]New value: +[ + "email", + "slack", + "social", + "essay" +]
1 tool update
- Changed
record_voice_feedback1 field changed- added
Input schema / properties / correctionText / descriptionAdded value: +"The complete final text the user actually used after correcting the output. Never send an excerpt, summary, or diff."
2 tool updates
- Changed
remove_sample_from_writing_profile2 fields changed- added
Output schema / properties / value / properties / heldNotUsableAdded value: +{ + "minimum": 0, + "type": "integer" +} - changed
Output schema / properties / value / requiredPrevious value: -[ - "profileId", - "generation", - "samples", - "needsWriting" -]New value: +[ + "profileId", + "generation", + "samples", + "needsWriting", + "heldNotUsable" +]
- Changed
replace_samples_in_writing_profile3 fields changed- changed
Output schema / properties / error / properties / code / enumPrevious value: -[ - "insufficient_evidence", - "profile_not_found", - "unexpected_error" -]New value: +[ + "insufficient_evidence", + "profile_not_found", + "samples_not_fully_visible", + "unexpected_error" +] - added
Output schema / properties / value / properties / heldNotUsableAdded value: +{ + "minimum": 0, + "type": "integer" +} - changed
Output schema / properties / value / requiredPrevious value: -[ - "profileId", - "generation", - "samples", - "needsWriting" -]New value: +[ + "profileId", + "generation", + "samples", + "needsWriting", + "heldNotUsable" +]
3 tool updates
- Changed
draft_in_voice1 field changed- changed
Output schema / properties / generationStatus / enumPrevious value: -[ - "succeeded", - "in_progress", - "completed_unavailable", - "failed", - "fenced_out", - "rebuild_required" -]New value: +[ + "succeeded" +]
- Changed
get_my_voice4 fields changed- removed
Output schema / properties / feedbackAvailableRemoved value: -{ - "type": "boolean" -} - removed
Output schema / properties / feedbackInstructionRemoved value: -{ - "type": [ - "string", - "null" - ] -} - removed
Output schema / properties / generationStatusRemoved value: -{ - "enum": [ - "succeeded" - ], - "type": "string" -} - removed
Output schema / properties / outputIdRemoved value: -{ - "type": [ - "string", - "null" - ] -}
- Changed
rewrite_in_voice1 field changed- changed
Output schema / properties / generationStatus / enumPrevious value: -[ - "succeeded", - "in_progress", - "completed_unavailable", - "failed", - "fenced_out", - "rebuild_required" -]New value: +[ + "succeeded" +]
7 tool updates
- Changed
add_samples_to_writing_profile5 fields changed- added
Input schema / properties / profileId / descriptionAdded value: +"The Writing Profile's id, or its exact name. Omit to use the current profile." - removed
Input schema / properties / profileId / formatRemoved value: -"uuid" - added
Input schema / properties / profileId / minLengthAdded value: +1 - changed
Input schema / requiredPrevious value: -[ - "profileId", - "samples" -]New value: +[ + "samples" +] - changed
Output schema / properties / error / properties / detail / requiredPrevious value: -[ - "reason", - "message", - "neededChars", - "neededBlocks", - "droppedBlocks", - "minimumChars", - "minimumBlocks" -]New value: +[ + "message" +]
- Changed
create_writing_profile1 field changed- changed
Output schema / properties / error / properties / detail / requiredPrevious value: -[ - "reason", - "message", - "neededChars", - "neededBlocks", - "droppedBlocks", - "minimumChars", - "minimumBlocks" -]New value: +[ + "message" +]
- Changed
delete_writing_profile7 fields changed- added
Input schema / properties / profileId / descriptionAdded value: +"The Writing Profile's id, or its exact name." - removed
Input schema / properties / profileId / formatRemoved value: -"uuid" - added
Input schema / properties / profileId / minLengthAdded value: +1 - added
Input schema / properties / replacementProfileId / descriptionAdded value: +"The Writing Profile's id, or its exact name." - removed
Input schema / properties / replacementProfileId / formatRemoved value: -"uuid" - added
Input schema / properties / replacementProfileId / minLengthAdded value: +1 - changed
Output schema / properties / error / properties / detail / requiredPrevious value: -[ - "reason", - "message", - "neededChars", - "neededBlocks", - "droppedBlocks", - "minimumChars", - "minimumBlocks" -]New value: +[ + "message" +]
- Changed
list_writing_profiles1 field changed- changed
Output schema / properties / error / properties / detail / requiredPrevious value: -[ - "reason", - "message", - "neededChars", - "neededBlocks", - "droppedBlocks", - "minimumChars", - "minimumBlocks" -]New value: +[ + "message" +]
- Changed
remove_sample_from_writing_profile4 fields changed- added
Input schema / properties / profileId / descriptionAdded value: +"The Writing Profile's id, or its exact name." - removed
Input schema / properties / profileId / formatRemoved value: -"uuid" - added
Input schema / properties / profileId / minLengthAdded value: +1 - changed
Output schema / properties / error / properties / detail / requiredPrevious value: -[ - "reason", - "message", - "neededChars", - "neededBlocks", - "droppedBlocks", - "minimumChars", - "minimumBlocks" -]New value: +[ + "message" +]
- Changed
replace_samples_in_writing_profile4 fields changed- added
Input schema / properties / profileId / descriptionAdded value: +"The Writing Profile's id, or its exact name." - removed
Input schema / properties / profileId / formatRemoved value: -"uuid" - added
Input schema / properties / profileId / minLengthAdded value: +1 - changed
Output schema / properties / error / properties / detail / requiredPrevious value: -[ - "reason", - "message", - "neededChars", - "neededBlocks", - "droppedBlocks", - "minimumChars", - "minimumBlocks" -]New value: +[ + "message" +]
- Changed
set_current_writing_profile4 fields changed- added
Input schema / properties / profileId / descriptionAdded value: +"The Writing Profile's id, or its exact name." - removed
Input schema / properties / profileId / formatRemoved value: -"uuid" - added
Input schema / properties / profileId / minLengthAdded value: +1 - changed
Output schema / properties / error / properties / detail / requiredPrevious value: -[ - "reason", - "message", - "neededChars", - "neededBlocks", - "droppedBlocks", - "minimumChars", - "minimumBlocks" -]New value: +[ + "message" +]
2 tool updates
- Changed
draft_in_voice1 field changed- changed
Input schema / properties / brief / maxLengthPrevious value: -4000New value: +8000
- Changed
replace_samples_in_writing_profile1 field changed- changed
Output schema / properties / error / properties / code / enumPrevious value: -[ - "profile_not_found", - "unexpected_error" -]New value: +[ + "insufficient_evidence", + "profile_not_found", + "unexpected_error" +]
7 tool updates
- Changed
add_samples_to_writing_profile1 field changed- added
Output schema / properties / error / properties / detailAdded value: +{ + "additionalProperties": false, + "properties": { + "droppedBlocks": { + "minimum": 0, + "type": "integer" + }, + "message": { + "type": "string" + }, + "minimumBlocks": { + "minimum": 0, + "type": "integer" + }, + "minimumChars": { + "minimum": 0, + "type": "integer" + }, + "neededBlocks": { + "minimum": 0, + "type": "integer" + }, + "neededChars": { + "minimum": 0, + "type": "integer" + }, + "reason": { + "enum": [ + "insufficient_input", + "unsupported_language" + ], + "type": "string" + } + }, + "required": [ + "reason", + "message", + "neededChars", + "neededBlocks", + "droppedBlocks", + "minimumChars", + "minimumBlocks" + ], + "type": "object" +}
- Changed
create_writing_profile1 field changed- added
Output schema / properties / error / properties / detailAdded value: +{ + "additionalProperties": false, + "properties": { + "droppedBlocks": { + "minimum": 0, + "type": "integer" + }, + "message": { + "type": "string" + }, + "minimumBlocks": { + "minimum": 0, + "type": "integer" + }, + "minimumChars": { + "minimum": 0, + "type": "integer" + }, + "neededBlocks": { + "minimum": 0, + "type": "integer" + }, + "neededChars": { + "minimum": 0, + "type": "integer" + }, + "reason": { + "enum": [ + "insufficient_input", + "unsupported_language" + ], + "type": "string" + } + }, + "required": [ + "reason", + "message", + "neededChars", + "neededBlocks", + "droppedBlocks", + "minimumChars", + "minimumBlocks" + ], + "type": "object" +}
- Changed
delete_writing_profile1 field changed- added
Output schema / properties / error / properties / detailAdded value: +{ + "additionalProperties": false, + "properties": { + "droppedBlocks": { + "minimum": 0, + "type": "integer" + }, + "message": { + "type": "string" + }, + "minimumBlocks": { + "minimum": 0, + "type": "integer" + }, + "minimumChars": { + "minimum": 0, + "type": "integer" + }, + "neededBlocks": { + "minimum": 0, + "type": "integer" + }, + "neededChars": { + "minimum": 0, + "type": "integer" + }, + "reason": { + "enum": [ + "insufficient_input", + "unsupported_language" + ], + "type": "string" + } + }, + "required": [ + "reason", + "message", + "neededChars", + "neededBlocks", + "droppedBlocks", + "minimumChars", + "minimumBlocks" + ], + "type": "object" +}
- Changed
list_writing_profiles1 field changed- added
Output schema / properties / error / properties / detailAdded value: +{ + "additionalProperties": false, + "properties": { + "droppedBlocks": { + "minimum": 0, + "type": "integer" + }, + "message": { + "type": "string" + }, + "minimumBlocks": { + "minimum": 0, + "type": "integer" + }, + "minimumChars": { + "minimum": 0, + "type": "integer" + }, + "neededBlocks": { + "minimum": 0, + "type": "integer" + }, + "neededChars": { + "minimum": 0, + "type": "integer" + }, + "reason": { + "enum": [ + "insufficient_input", + "unsupported_language" + ], + "type": "string" + } + }, + "required": [ + "reason", + "message", + "neededChars", + "neededBlocks", + "droppedBlocks", + "minimumChars", + "minimumBlocks" + ], + "type": "object" +}
- Changed
remove_sample_from_writing_profile1 field changed- added
Output schema / properties / error / properties / detailAdded value: +{ + "additionalProperties": false, + "properties": { + "droppedBlocks": { + "minimum": 0, + "type": "integer" + }, + "message": { + "type": "string" + }, + "minimumBlocks": { + "minimum": 0, + "type": "integer" + }, + "minimumChars": { + "minimum": 0, + "type": "integer" + }, + "neededBlocks": { + "minimum": 0, + "type": "integer" + }, + "neededChars": { + "minimum": 0, + "type": "integer" + }, + "reason": { + "enum": [ + "insufficient_input", + "unsupported_language" + ], + "type": "string" + } + }, + "required": [ + "reason", + "message", + "neededChars", + "neededBlocks", + "droppedBlocks", + "minimumChars", + "minimumBlocks" + ], + "type": "object" +}
- Changed
replace_samples_in_writing_profile1 field changed- added
Output schema / properties / error / properties / detailAdded value: +{ + "additionalProperties": false, + "properties": { + "droppedBlocks": { + "minimum": 0, + "type": "integer" + }, + "message": { + "type": "string" + }, + "minimumBlocks": { + "minimum": 0, + "type": "integer" + }, + "minimumChars": { + "minimum": 0, + "type": "integer" + }, + "neededBlocks": { + "minimum": 0, + "type": "integer" + }, + "neededChars": { + "minimum": 0, + "type": "integer" + }, + "reason": { + "enum": [ + "insufficient_input", + "unsupported_language" + ], + "type": "string" + } + }, + "required": [ + "reason", + "message", + "neededChars", + "neededBlocks", + "droppedBlocks", + "minimumChars", + "minimumBlocks" + ], + "type": "object" +}
- Changed
set_current_writing_profile1 field changed- added
Output schema / properties / error / properties / detailAdded value: +{ + "additionalProperties": false, + "properties": { + "droppedBlocks": { + "minimum": 0, + "type": "integer" + }, + "message": { + "type": "string" + }, + "minimumBlocks": { + "minimum": 0, + "type": "integer" + }, + "minimumChars": { + "minimum": 0, + "type": "integer" + }, + "neededBlocks": { + "minimum": 0, + "type": "integer" + }, + "neededChars": { + "minimum": 0, + "type": "integer" + }, + "reason": { + "enum": [ + "insufficient_input", + "unsupported_language" + ], + "type": "string" + } + }, + "required": [ + "reason", + "message", + "neededChars", + "neededBlocks", + "droppedBlocks", + "minimumChars", + "minimumBlocks" + ], + "type": "object" +}
2 tool updates
- Added
remove_sample_from_writing_profile - Added
replace_samples_in_writing_profile
5 tool updates
- Added
add_samples_to_writing_profile - Added
create_writing_profile - Added
delete_writing_profile - Added
list_writing_profiles - Added
set_current_writing_profile
2 tool updates
- Changed
record_voice_feedback1 field changed- added
Input schema / properties / critiqueAdded value: +{ + "maxLength": 2000, + "minLength": 1, + "type": "string" +}
- Changed
rewrite_in_voice1 field changed- added
Input schema / properties / instructionsAdded value: +{ + "description": "Optional instruction from the user about the rewrite itself — length, tone, audience, what to cut or keep. Kept separate from `text`: put the request here, never inside the prose to rewrite.", + "maxLength": 4000, + "minLength": 1, + "type": "string" +}
Related MCP Connectors
Build a voice from your own texts, measure whether a text still sounds like you, then write in it.
A personal RAG database you build from chat, so AI creates work that sounds like you.
Write LinkedIn posts in your voice: ideas, drafts, scheduling, analytics from your personal AI.
Find AI-isms with evidence and fingerprint a writing voice from samples. 3 of 5 free.
Related MCP Servers
FlicenseNot gradedqualityDmaintenancePersonal RAG database and semantic search built from inside your AI chat. Store knowledge, voice, and skills; Claude and ChatGPT create work that sounds like you.-- AlicenseAqualityBmaintenanceMCP server that analyzes your writing style to generate personal voice rules, scores drafts for AI slop, and verifies authorship, enabling LLMs to write in your specific voice.7MIT
- FlicenseAqualityBmaintenanceEnables LLMs to access a user's personal writing context—voice, style, opinions, expertise, projects, and communication patterns—via curated markdown files, helping the LLM match the user's voice when generating written content.23-
- AlicenseAqualityAmaintenanceEnables human-like non-fiction authoring by training custom voices, applying tone presets, auditing drafts for AI tells, and managing dictionaries, all locally.19149 npm8MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.