Server definition
- Hash
- sha256:c56d0d584b5130ecee57bce3f509c87eea1fc1c12b9a2807923a46f451964a37
- What it is
- What a remote MCP server returned when asked what it offers: 5 tools
The blob, as servednamed by its sha256
{
"instructions": "Voice-matching editor for AI drafts. Free: ai_tell_scan (find AI-isms with evidence), voice_fingerprint (metric profile from writing samples), burstiness_report. Premium: humanize_plan (rewrite brief with measurable targets) and verify_rewrite (prove the rewrite moved toward the voice). This is a style/voice tool — do not use it to misrepresent authorship of academic or assessed work.",
"tools": [
{
"description": "Scan a draft for the measurable tells of AI-generated prose. FREE.\n\nFlags stock phrases (with exact quotes), structural reflexes, uniform\nsentence rhythm, em-dash overuse, and hedging boilerplate — every flag\ncites the actual text. Typical input {\"text\": \"<draft>\"} returns\n{\"reads_human_score\": 0-100, \"metrics\": {\"burstiness\": ...,\n\"avg_sentence_len\": ..., ...}, \"evidence\": [{\"type\": \"stock_phrase\",\n\"quote\": \"...\"}], \"note\": \"...\"}.\n\nUse for a first read on whether a draft carries machine-writing signals.\nReports measurable patterns, not a verdict on who wrote the text, and must\nnot be used to accuse a person of anything. Not for rhythm detail\n(burstiness_report) or for a rewrite brief (humanize_plan). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"empty text\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"text": {
"description": "The draft to scan — at least one full sentence of plain text.",
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"name": "ai_tell_scan",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Map a draft's sentence rhythm and find where it goes flat. FREE.\n\nReports per-sentence lengths, the burstiness coefficient, and runs of\nsimilar-length sentences. Typical input {\"text\": \"<draft>\"} returns\n{\"sentence_lengths\": [12, 14, 13, 5, 28], \"burstiness\": 0.52,\n\"flat_runs\": [{\"sentences\": \"1-3\", \"lengths\": [12, 14, 13]}],\n\"tip\": \"...\"}.\n\nUse when prose reads flat and sentence-length pattern is the suspect. Not\nfor a full inventory of tells (ai_tell_scan). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"need 3+ sentences\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"text": {
"description": "The draft to analyze; needs at least 3 sentences.",
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"name": "burstiness_report",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Produce a precise rewrite brief that de-AIs a draft, with numeric targets. PREMIUM (license).\n\nLists every flagged tell with its fix and sentence-rhythm surgery\ntargets; when a voice_fingerprint result is supplied, adds numeric\ntargets to hit that person's voice. Apply the brief with your agent,\nthen confirm with verify_rewrite. Typical input {\"text\": \"<draft>\",\n\"fingerprint\": <voice_fingerprint result>} returns {\"current_score\":\n0-100, \"edit_list\": [\"...\"], \"numeric_targets\": {...}, \"process\": ...,\n\"integrity_note\": ...}.\n\nUse after a scan has identified what to fix; returns a brief, not\nrewritten prose. Not for checking whether a rewrite worked\n(verify_rewrite). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"fingerprint": {
"additionalProperties": true,
"default": null,
"description": "Optional voice profile object exactly as returned by\nvoice_fingerprint; omit for a style-only pass.",
"type": "object"
},
"text": {
"description": "The AI draft to plan a rewrite for.",
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"name": "humanize_plan",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Verify a rewrite actually improved: score delta, meaning check, voice distance. PREMIUM (license).\n\nCompares reads-human score before/after, a meaning-preservation proxy,\nand (with a fingerprint) numeric distance to the target voice. Typical\ninput {\"original\": \"<draft>\", \"rewrite\": \"<edited draft>\"} returns\n{\"score_before\": N, \"score_after\": N, \"score_delta\": N,\n\"content_word_retention_pct\": N, \"remaining_tells\": [...],\n\"verdict\": \"Improved — ship it\" | \"Marginal — ...\"}.\n\nUse only when both the before and the after text are available. Not for\nscoring a single draft (ai_tell_scan). Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"both texts must be non-empty\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"fingerprint": {
"additionalProperties": true,
"default": null,
"description": "Optional voice profile object exactly as returned by\nvoice_fingerprint, to measure distance to the target voice.",
"type": "object"
},
"original": {
"description": "The draft before editing.",
"type": "string"
},
"rewrite": {
"description": "The same content after the humanize_plan edits.",
"type": "string"
}
},
"required": [
"original",
"rewrite"
],
"type": "object"
},
"name": "verify_rewrite",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Build a measurable voice profile from samples of a person's real writing. FREE.\n\nFeed it 2+ samples (emails, posts, essays — 150+ words total) and use\nthe result with humanize_plan / verify_rewrite. Typical input\n{\"samples\": [\"<email text>\", \"<blog post>\"]} returns {\"label\":\n\"my-voice\", \"target_metrics\": {\"avg_sentence_len\": ..., \"burstiness\":\n..., ...}, \"favorite_words\": [...], \"signature_habits\": [\"...\"],\n\"words_analyzed\": N}.\n\nUse on samples the person actually wrote, to build a target profile. Not\nfor scoring an unknown draft (ai_tell_scan) and not on text the person did\nnot write. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {\"error\": \"<what is wrong and how to fix it>\"} (for example {\"error\": \"need 150+ words of real writing across the samples\"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"label": {
"default": "my-voice",
"description": "Optional name for this voice profile. Default \"my-voice\".",
"type": "string"
},
"samples": {
"description": "List of real writing samples by the same person; 150+\nwords combined across all samples.",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"samples"
],
"type": "object"
},
"name": "voice_fingerprint",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:c56d0d584b5130ecee57bce3f509c87eea1fc1c12b9a2807923a46f451964a37 | sha256sum