Skip to main content
Glama

Server Details

Loads your personal writing voice into any AI and scores how closely a draft matches it.

Ownership verified
Status
Unhealthy
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP
URL
Repository
moshpit-labs/idiolect-mcp
GitHub Stars
0
Server Listing
idiolect-mcp

Available Tools

2 tools
rewriteRewriteAInspect

Change prose the user supplied while preserving the meaning, facts and deliberate details that must survive. Use this for anything from a light edit to a substantial rewrite or a recast for another writing situation. Idiolect AI applies the user's established writing patterns automatically. If more personal writing is needed, this tool returns the precise shortfall so you can gather only that evidence, obtain permission to store it and retry the same task. Do not check profile state first.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe prose to change. Treat it as source material whose meaning, facts and deliberate details must survive unless the user explicitly asks to change them. Never mix the user's rewrite instruction into this field.
formatNoThe new form only when the user explicitly asks to recast the piece: email, Slack message, social post or essay. Omit this for ordinary edits and rewrites.
evidenceNoUse only after this writing tool says personalization needs more evidence. Include the exact natural writing the user actually authored and has explicitly agreed Idiolect AI may store for personalization. Prefer the smallest trustworthy set from a writing situation close to the current task; broaden only when needed. Exclude prompts, AI-written text, templates, boilerplate, signatures, quoted or forwarded text and anything with uncertain authorship.
instructionsNoWhat the user wants changed, such as shorter, clearer, warmer, less formal, more direct or only lightly edited. Keep this separate from the prose itself. Omit it when the request is already unambiguous.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nextYes
textNoThe finished writing. Present only when status is complete.
errorNo
statusYesWhere the original writing task stands: finished, waiting for approved writing evidence, ready for the same task to be retried, still preparing personalization or unable to complete.
messageYesA concise explanation of what happened and, when needed, the exact next step.
neededWritingNo
omitEvidenceOnRetryNoTrue when approved evidence has been accepted and the same writing task should now be retried without sending that evidence again.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond annotations, the description discloses automatic application of the user's established writing patterns, the shortfall-return mechanism when more personal writing is needed, and the instruction not to pre-check profile state. These are behavioral details that materially shape how the agent invokes the tool, and nothing contradicts the annotations.

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?

Five sentences, all informative, with the main purpose front-loaded. It is slightly longer than the minimal two-sentence ideal, but each sentence contributes either scope, behavior, or workflow guidance.

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 of this complexity, the description supplies the core workflow: preserve meaning and facts, automatic personalization, evidence shortfall/retry loop, and no profile pre-check. The comprehensive input schema and presence of an output schema carry the parameter and return detail, so an agent has what it needs to call the tool correctly.

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?

Input schema covers 100% of parameters with detailed descriptions, so the baseline is 3. The description reinforces the 'text' parameter ('prose the user supplied') and recasting, but it does not add new param-level semantics beyond what the schema already provides.

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?

Opens with a specific verb and object: 'Change prose the user supplied...' and defines scope as light edit, substantial rewrite, or recast. This makes it clearly a transformation of existing user text, distinct in spirit from the sibling 'write' which would produce new text.

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?

Explicitly says 'Use this for anything from a light edit to a substantial rewrite or a recast for another writing situation,' giving clear invocation context. It also says not to check profile state first. It does not explicitly name the alternative 'write' or state when not to use the tool, so it stops one point short of a 5.

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

writeWriteAInspect

Create a new piece of writing for the user. Start with the request and facts already available; a short request is enough. Idiolect AI applies the user's established writing patterns automatically. If more personal writing is needed, this tool returns the precise shortfall so you can find only that evidence, obtain permission to store it and retry the same task. Do not check profile state first.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoThe kind of finished piece when the user has made it clear. Omit this when it is not clear; the writing task can still proceed.
requestYesWhat the finished piece should do. Carry forward the audience, purpose, facts and constraints already present in the user's request. A short request is enough. Do not invent facts merely to make it feel more complete.
evidenceNoUse only after this writing tool says personalization needs more evidence. Include the exact natural writing the user actually authored and has explicitly agreed Idiolect AI may store for personalization. Prefer the smallest trustworthy set from a writing situation close to the current task; broaden only when needed. Exclude prompts, AI-written text, templates, boilerplate, signatures, quoted or forwarded text and anything with uncertain authorship.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nextYes
textNoThe finished writing. Present only when status is complete.
errorNo
statusYesWhere the original writing task stands: finished, waiting for approved writing evidence, ready for the same task to be retried, still preparing personalization or unable to complete.
messageYesA concise explanation of what happened and, when needed, the exact next step.
neededWritingNo
omitEvidenceOnRetryNoTrue when approved evidence has been accepted and the same writing task should now be retried without sending that evidence again.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations provide little behavioral signal beyond readOnly=false and destructive=false. The description adds that Idiolect AI applies the user's writing patterns automatically, that insufficient personalization produces a precise shortfall, and that the caller should collect evidence, obtain permission, and retry. This is meaningful behavioral context beyond the structured fields.

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?

Four sentences, roughly 80 words, with the purpose front-loaded and every sentence earning its place. It covers the basic call, the personalization behavior, the evidence retry loop, and a direct do-not-check instruction without repeating schema content.

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?

It covers the full workflow: initial request, automatic personalization, shortfall detection, evidence collection with permission, and retry. An output schema exists, so return-value details are not required. The main omission is an explicit routing statement against the rewrite sibling, but that is a moderate gap given the otherwise complete guidance.

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?

The input schema already documents all parameters fully, including the evidence consent rules, so the baseline is 3. The description adds cross-cutting guidance: a short request is sufficient, facts should not be invented, and evidence should only be gathered after the tool reports a shortfall. This pushes it above baseline.

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 opens with a concrete verb and resource: 'Create a new piece of writing for the user.' The word 'new' distinguishes it from the sibling tool 'rewrite', making the tool's role clear without needing to name the alternative.

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 clear practical guidance: start with the request and facts already available, keep the request short, and do not check profile state first. It also explains the retry flow when more personal evidence is needed. It does not explicitly compare with rewrite or state when not to use this tool, so it stops short of a 5.

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.

  1. 16 tool updates
    • Removedadd_samples_to_writing_profile
    • Removedcreate_my_voice
    • Removedcreate_writing_profile
    • Removeddelete_writing_profile
    • Removeddraft_in_voice
    • Removedget_my_voice
    • Removedlist_writing_profile_samples
    • Removedlist_writing_profiles
    • Removedrecord_voice_feedback
    • Removedremove_sample_from_writing_profile
    • Removedreplace_samples_in_writing_profile
    • Addedrewrite
    • Removedrewrite_in_voice
    • Removedscore_voice
    • Removedset_current_writing_profile
    • Addedwrite
  2. 1 tool update
    • Changedcreate_my_voice1 field changed
      • changedInput schema / properties / samples / description
        Previous 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."
  3. 1 tool update
    • Changedrecord_voice_feedback4 fields changed
      • removedOutput schema / properties / feedback
        Removed value: -{
        -  "enum": [
        -    "accepted",
        -    "corrected_and_accepted",
        -    "rejected"
        -  ],
        -  "type": "string"
        -}
      • removedOutput schema / properties / learned
        Removed value: -{
        -  "type": "boolean"
        -}
      • addedOutput schema / properties / needsFinalText
        Added value: +{
        +  "type": "boolean"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "state",
        -  "message",
        -  "next",
        -  "feedback",
        -  "learned"
        -]New value: +[
        +  "state",
        +  "message",
        +  "next",
        +  "needsFinalText"
        +]
  4. 1 tool update
    • Changedrecord_voice_feedback2 fields changed
      • changedInput schema / properties / critique / maxLength
        Previous value: -2000New value: +20000
      • changedInput schema / properties / status / enum
        Previous value: -[
        -  "accepted",
        -  "corrected_and_accepted",
        -  "rejected"
        -]New value: +[
        +  "accepted",
        +  "corrected_and_accepted",
        +  "rejected",
        +  "normal"
        +]
  5. 1 tool update
    • Changedrecord_voice_feedback4 fields changed
      • changedInput schema / properties / correctionText / description
        Previous 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."
      • addedInput schema / properties / critique / description
        Added 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."
      • removedInput schema / properties / permissionToLearn
        Removed value: -{
        -  "type": "boolean"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "outputId",
        -  "status",
        -  "permissionToLearn"
        -]New value: +[
        +  "outputId",
        +  "status"
        +]
  6. 5 tool updates
    • Changedcreate_my_voice2 fields changed
      • addedOutput schema / properties / error
        Added 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"
        +}
      • changedOutput schema / properties / status / enum
        Previous value: -[
        -  "ready",
        -  "more_evidence_required",
        -  "build_in_progress",
        -  "failed"
        -]New value: +[
        +  "ready",
        +  "more_evidence_required",
        +  "build_in_progress",
        +  "failed",
        +  "rate_limited"
        +]
    • Changeddraft_in_voice2 fields changed
      • changedOutput schema / properties / error / properties / code / enum
        Previous value: -[
        -  "insufficient_credits",
        -  "credit_accounting_unavailable"
        -]New value: +[
        +  "insufficient_credits",
        +  "credit_accounting_unavailable",
        +  "local_llm_budget_exhausted"
        +]
      • changedOutput schema / properties / status / enum
        Previous value: -[
        -  "ready",
        -  "setup_required",
        -  "purchase_required",
        -  "accounting_unavailable"
        -]New value: +[
        +  "ready",
        +  "setup_required",
        +  "purchase_required",
        +  "accounting_unavailable",
        +  "rate_limited"
        +]
    • Addedlist_writing_profile_samples
    • Changedrewrite_in_voice2 fields changed
      • changedOutput schema / properties / error / properties / code / enum
        Previous value: -[
        -  "insufficient_credits",
        -  "credit_accounting_unavailable"
        -]New value: +[
        +  "insufficient_credits",
        +  "credit_accounting_unavailable",
        +  "local_llm_budget_exhausted"
        +]
      • changedOutput schema / properties / status / enum
        Previous value: -[
        -  "ready",
        -  "setup_required",
        -  "purchase_required",
        -  "accounting_unavailable"
        -]New value: +[
        +  "ready",
        +  "setup_required",
        +  "purchase_required",
        +  "accounting_unavailable",
        +  "rate_limited"
        +]
    • Changedscore_voice2 fields changed
      • addedOutput schema / properties / error
        Added 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"
        +}
      • changedOutput schema / properties / status / enum
        Previous value: -[
        -  "ready",
        -  "setup_required"
        -]New value: +[
        +  "ready",
        +  "setup_required",
        +  "rate_limited"
        +]
  7. 1 tool update
    • Changedrewrite_in_voice1 field changed
      • changedInput schema / properties / targetRegister / enum
        Previous value: -[
        -  "email",
        -  "slack",
        -  "essay"
        -]New value: +[
        +  "email",
        +  "slack",
        +  "social",
        +  "essay"
        +]
  8. 1 tool update
    • Changedrecord_voice_feedback1 field changed
      • addedInput schema / properties / correctionText / description
        Added value: +"The complete final text the user actually used after correcting the output. Never send an excerpt, summary, or diff."
  9. 2 tool updates
    • Changedremove_sample_from_writing_profile2 fields changed
      • addedOutput schema / properties / value / properties / heldNotUsable
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • changedOutput schema / properties / value / required
        Previous value: -[
        -  "profileId",
        -  "generation",
        -  "samples",
        -  "needsWriting"
        -]New value: +[
        +  "profileId",
        +  "generation",
        +  "samples",
        +  "needsWriting",
        +  "heldNotUsable"
        +]
    • Changedreplace_samples_in_writing_profile3 fields changed
      • changedOutput schema / properties / error / properties / code / enum
        Previous value: -[
        -  "insufficient_evidence",
        -  "profile_not_found",
        -  "unexpected_error"
        -]New value: +[
        +  "insufficient_evidence",
        +  "profile_not_found",
        +  "samples_not_fully_visible",
        +  "unexpected_error"
        +]
      • addedOutput schema / properties / value / properties / heldNotUsable
        Added value: +{
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • changedOutput schema / properties / value / required
        Previous value: -[
        -  "profileId",
        -  "generation",
        -  "samples",
        -  "needsWriting"
        -]New value: +[
        +  "profileId",
        +  "generation",
        +  "samples",
        +  "needsWriting",
        +  "heldNotUsable"
        +]
  10. 3 tool updates
    • Changeddraft_in_voice1 field changed
      • changedOutput schema / properties / generationStatus / enum
        Previous value: -[
        -  "succeeded",
        -  "in_progress",
        -  "completed_unavailable",
        -  "failed",
        -  "fenced_out",
        -  "rebuild_required"
        -]New value: +[
        +  "succeeded"
        +]
    • Changedget_my_voice4 fields changed
      • removedOutput schema / properties / feedbackAvailable
        Removed value: -{
        -  "type": "boolean"
        -}
      • removedOutput schema / properties / feedbackInstruction
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / generationStatus
        Removed value: -{
        -  "enum": [
        -    "succeeded"
        -  ],
        -  "type": "string"
        -}
      • removedOutput schema / properties / outputId
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
    • Changedrewrite_in_voice1 field changed
      • changedOutput schema / properties / generationStatus / enum
        Previous value: -[
        -  "succeeded",
        -  "in_progress",
        -  "completed_unavailable",
        -  "failed",
        -  "fenced_out",
        -  "rebuild_required"
        -]New value: +[
        +  "succeeded"
        +]
  11. 7 tool updates
    • Changedadd_samples_to_writing_profile5 fields changed
      • addedInput schema / properties / profileId / description
        Added value: +"The Writing Profile's id, or its exact name. Omit to use the current profile."
      • removedInput schema / properties / profileId / format
        Removed value: -"uuid"
      • addedInput schema / properties / profileId / minLength
        Added value: +1
      • changedInput schema / required
        Previous value: -[
        -  "profileId",
        -  "samples"
        -]New value: +[
        +  "samples"
        +]
      • changedOutput schema / properties / error / properties / detail / required
        Previous value: -[
        -  "reason",
        -  "message",
        -  "neededChars",
        -  "neededBlocks",
        -  "droppedBlocks",
        -  "minimumChars",
        -  "minimumBlocks"
        -]New value: +[
        +  "message"
        +]
    • Changedcreate_writing_profile1 field changed
      • changedOutput schema / properties / error / properties / detail / required
        Previous value: -[
        -  "reason",
        -  "message",
        -  "neededChars",
        -  "neededBlocks",
        -  "droppedBlocks",
        -  "minimumChars",
        -  "minimumBlocks"
        -]New value: +[
        +  "message"
        +]
    • Changeddelete_writing_profile7 fields changed
      • addedInput schema / properties / profileId / description
        Added value: +"The Writing Profile's id, or its exact name."
      • removedInput schema / properties / profileId / format
        Removed value: -"uuid"
      • addedInput schema / properties / profileId / minLength
        Added value: +1
      • addedInput schema / properties / replacementProfileId / description
        Added value: +"The Writing Profile's id, or its exact name."
      • removedInput schema / properties / replacementProfileId / format
        Removed value: -"uuid"
      • addedInput schema / properties / replacementProfileId / minLength
        Added value: +1
      • changedOutput schema / properties / error / properties / detail / required
        Previous value: -[
        -  "reason",
        -  "message",
        -  "neededChars",
        -  "neededBlocks",
        -  "droppedBlocks",
        -  "minimumChars",
        -  "minimumBlocks"
        -]New value: +[
        +  "message"
        +]
    • Changedlist_writing_profiles1 field changed
      • changedOutput schema / properties / error / properties / detail / required
        Previous value: -[
        -  "reason",
        -  "message",
        -  "neededChars",
        -  "neededBlocks",
        -  "droppedBlocks",
        -  "minimumChars",
        -  "minimumBlocks"
        -]New value: +[
        +  "message"
        +]
    • Changedremove_sample_from_writing_profile4 fields changed
      • addedInput schema / properties / profileId / description
        Added value: +"The Writing Profile's id, or its exact name."
      • removedInput schema / properties / profileId / format
        Removed value: -"uuid"
      • addedInput schema / properties / profileId / minLength
        Added value: +1
      • changedOutput schema / properties / error / properties / detail / required
        Previous value: -[
        -  "reason",
        -  "message",
        -  "neededChars",
        -  "neededBlocks",
        -  "droppedBlocks",
        -  "minimumChars",
        -  "minimumBlocks"
        -]New value: +[
        +  "message"
        +]
    • Changedreplace_samples_in_writing_profile4 fields changed
      • addedInput schema / properties / profileId / description
        Added value: +"The Writing Profile's id, or its exact name."
      • removedInput schema / properties / profileId / format
        Removed value: -"uuid"
      • addedInput schema / properties / profileId / minLength
        Added value: +1
      • changedOutput schema / properties / error / properties / detail / required
        Previous value: -[
        -  "reason",
        -  "message",
        -  "neededChars",
        -  "neededBlocks",
        -  "droppedBlocks",
        -  "minimumChars",
        -  "minimumBlocks"
        -]New value: +[
        +  "message"
        +]
    • Changedset_current_writing_profile4 fields changed
      • addedInput schema / properties / profileId / description
        Added value: +"The Writing Profile's id, or its exact name."
      • removedInput schema / properties / profileId / format
        Removed value: -"uuid"
      • addedInput schema / properties / profileId / minLength
        Added value: +1
      • changedOutput schema / properties / error / properties / detail / required
        Previous value: -[
        -  "reason",
        -  "message",
        -  "neededChars",
        -  "neededBlocks",
        -  "droppedBlocks",
        -  "minimumChars",
        -  "minimumBlocks"
        -]New value: +[
        +  "message"
        +]
  12. 2 tool updates
    • Changeddraft_in_voice1 field changed
      • changedInput schema / properties / brief / maxLength
        Previous value: -4000New value: +8000
    • Changedreplace_samples_in_writing_profile1 field changed
      • changedOutput schema / properties / error / properties / code / enum
        Previous value: -[
        -  "profile_not_found",
        -  "unexpected_error"
        -]New value: +[
        +  "insufficient_evidence",
        +  "profile_not_found",
        +  "unexpected_error"
        +]
  13. 7 tool updates
    • Changedadd_samples_to_writing_profile1 field changed
      • addedOutput schema / properties / error / properties / detail
        Added 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"
        +}
    • Changedcreate_writing_profile1 field changed
      • addedOutput schema / properties / error / properties / detail
        Added 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"
        +}
    • Changeddelete_writing_profile1 field changed
      • addedOutput schema / properties / error / properties / detail
        Added 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"
        +}
    • Changedlist_writing_profiles1 field changed
      • addedOutput schema / properties / error / properties / detail
        Added 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"
        +}
    • Changedremove_sample_from_writing_profile1 field changed
      • addedOutput schema / properties / error / properties / detail
        Added 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"
        +}
    • Changedreplace_samples_in_writing_profile1 field changed
      • addedOutput schema / properties / error / properties / detail
        Added 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"
        +}
    • Changedset_current_writing_profile1 field changed
      • addedOutput schema / properties / error / properties / detail
        Added 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"
        +}
  14. 2 tool updates
    • Addedremove_sample_from_writing_profile
    • Addedreplace_samples_in_writing_profile
  15. 5 tool updates
    • Addedadd_samples_to_writing_profile
    • Addedcreate_writing_profile
    • Addeddelete_writing_profile
    • Addedlist_writing_profiles
    • Addedset_current_writing_profile
  16. 2 tool updates
    • Changedrecord_voice_feedback1 field changed
      • addedInput schema / properties / critique
        Added value: +{
        +  "maxLength": 2000,
        +  "minLength": 1,
        +  "type": "string"
        +}
    • Changedrewrite_in_voice1 field changed
      • addedInput schema / properties / instructions
        Added 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"
        +}

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Personal 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.
    -
  • A
    license
    A
    quality
    B
    maintenance
    MCP 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.
    7
    MIT
  • F
    license
    A
    quality
    B
    maintenance
    Enables 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.
    2
    3
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.4/5.0
Disambiguation5/5

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.

Naming Consistency5/5

Both tool names are single lowercase verbs that form a natural pair: write and rewrite. The naming is simple, predictable, and consistent in style.

Tool Count3/5

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.

Completeness4/5

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.