Amanuensis
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., "@AmanuensisRead my manuscript and propose one edit that sharpens the opening."
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.
Amanuensis
A writing desk where you and your agent work on the same manuscript without fighting over the pen.
You write in the page. Your agent reads it through WebMCP tools, drafts against the voice the page holds, and proposes. Every agent write lands as wet ink beside your prose, scored against that voice, and nothing enters the manuscript until you accept it. Reject with a note and the agent can read why.
Live: https://amanuensis-mikezenkos-projects.vercel.app
Built for the OpenAI WebMCP Challenge.
Try it in two minutes
Open the live URL in a WebMCP host. ChatGPT's in-app browser works out of the box. Chrome 149+ works after enabling
chrome://flags/#enable-webmcp-testing.Tell your agent: "Read my manuscript and propose one edit that sharpens the opening."
The proposal appears as teal wet ink in the page and as a card in the margin, with its voice score. Accept it, or reject it with a note the agent can read back.
To make it personal: "Build my voice from these samples," and paste 150 or more words of your own prose. The desk fingerprints your voice, switches to it, and scores every proposal against you instead of a famous author.
The desk seeds a short demo manuscript on first visit, so there is something to edit immediately.
Related MCP server: long-novel-agent-kit
Why WebMCP for this
An agent loose in a writing surface has one move: paste text over yours. That is the failure mode WebMCP exists to fix. Instead of letting the agent guess its way through the UI, the page hands it a narrower, better pen:
Proposals, not edits. No tool in this app mutates the manuscript. Writes come back as staged proposals; the writer's accept is the only thing that commits them.
The page holds the voice. The manuscript carries a stylometric fingerprint of its voice (a bundled author, or one built from the writer's own samples). Every proposal is scored against it before the writer sees it, and the agent is told the verdict.
The rejection is data. When the writer rejects with a note,
get_proposalsreturns it. The agent's next proposal can be better for a reason.
Neither side can do this alone. The writer keeps taste and authority without retyping the agent's ideas; the agent gets structured access, honest telemetry about how its prose reads, and a feedback loop that survives between turns. The collaboration is visible on screen: wet ink, a live voice gauge, an activity feed of every tool call, and a version history that records which words entered the page by whose hand.
The tools
Tool | What it does |
| Full text, title, word count, and the writer's current selection |
| Headings and scene breaks with word counts |
| The active voice: baseline metrics, calibration band, reference excerpt, and the style contract of flagged constructions |
| Score a draft against the voice before proposing: match score, rhythm verdict, and every flagged tell with its reason |
| Fingerprint a personal voice from the writer's own samples and switch the desk to it |
| Stage a replacement for an exact quote, with a rationale, as wet ink |
| Stage new prose at an anchor, with a rationale, as wet ink |
| Every proposal and its outcome, including the writer's rejection notes |
| Save a named version before suggesting anything sweeping |
| The version history, with author attribution (writer or agent-accepted) |
Proposals address the manuscript by exact quote, not by offsets, so they survive the writer typing around them. When the writer edits a quoted passage away, the proposal honestly reports itself stale instead of landing somewhere wrong.
How the voice gauge works
All scoring is local, synchronous, and model-free; the page never sends the manuscript anywhere.
Voice match is a weighted blend of function-word cosine similarity against the voice's reference samples, plus burstiness (sentence-length variance) and mean sentence length read against the voice's baseline.
Calibration uses leave-one-out scoring of the voice's own samples: with 3 or more samples and 800 or more words, the gauge shows a personal band (how much the author varies against themselves) instead of a bare number. Below that it honestly reads close or far, not a fake band.
Rhythm and variety reads burstiness and MTLD (a length-robust lexical variety measure) against the bands the voice's own samples hold.
Tells come from a tiered catalog of constructions that read as machine prose: always-flagged vocabulary, cluster rules, density rules, and an em-dash budget.
These are heuristics and the UI labels them as such. The engine is a TypeScript port of stylometric tooling from my prior research into how human and AI prose differ statistically, with exact-parity tests against the original implementation (130 fixture comparisons, max difference zero).
Run locally
pnpm install
pnpm dev # Vite dev server
pnpm test # 274 tests
pnpm buildTo exercise the tool layer without a WebMCP host, open the app with ?mcp=mock. That installs a loopback model context and exposes the registered tools on window.__webmcpTools, so you can drive them from the console. The mock never installs when a real host has injected the API.
Repo layout
src/webmcp.ts: thin wrapper over the WebMCP model-context API, host-agnosticsrc/desk/: the surface: desk UI, proposal store, tool registrations, voice adaptersrc/writing/: manuscript editor internals (CodeMirror 6), diff, outline, versions, wet-ink decorationssrc/voice/: the dependency-free voice engine: metrics, calibration, tell detection, bundled personas
Provenance
Built during the challenge submission period. The concept and two pieces predate it and are my own work, reused here: the manuscript-editor internals were extracted from an unreleased personal writing tool, and the voice-metrics engine is a TypeScript port of stylometric research code I wrote for studying human versus AI prose. The WebMCP layer, the proposal model, the desk UI, and the engine port itself were all written for this challenge.
License
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseCqualityDmaintenanceA multi-agent book-writing MCP server that manages a guarded chapter pipeline (writer → editor → third-pass agents → approve) with project planning, continuity tracking, and export/diff helpers.35
- AlicenseCqualityCmaintenanceProvides local desktop agents with durable project memory and safety gates for writing long novels, enabling continuity management, chapter drafting, and state-aware handoffs.31MIT
- AlicenseAqualityBmaintenanceEnables AI tools to collaboratively write novels by managing chapters, characters, and story state through commands like validate, context, draft, review, and approve.8MIT
- AlicenseAqualityAmaintenanceEnables human-like non-fiction authoring by training custom voices, applying tone presets, auditing drafts for AI tells, and managing dictionaries, all locally.10198MIT
Related MCP Connectors
Loads your personal writing voice into any AI and scores how closely a draft matches it.
The open, measured register where AI agents evolve written English together.
MCP-native collaborative markdown editor with real-time AI document editing
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/MikeZenko/AmanuensisAI---The-WebMCP-Challenge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server