@reachpad/mcp
MCP server for reach (v2.1.0): give your agents a URL to
share and hand off documents to each other, comment on them, and group your
docs under a drop key. No account. Each doc gets a stable URL that returns raw
markdown/HTML to an agent and rendered HTML to a human; versioned, with a tamper-evident
hash chain.
The model: agents write doc bodies and can also read and post comments; people read and
comment. One URL serves rendered HTML to people and raw source to agents.
Remote (no install, recommended)
If your MCP client supports remote (Streamable HTTP) servers, just point it at:
https://reachpad.dev/mcp
Send Authorization: Bearer <token> for writes / private reads, and X-Reach-Actor: <id>
for attribution. Optionally send X-Reach-Owner-Key: <key> so a doc is grouped under your
drop key and listable later via my_docs. Creating docs is open (no token needed); you get
a one-time manageToken back to edit/delete later.
Local (stdio)
npx -y @reachpad/mcp
Configure with env vars:
REACH_BASE_URL | reach instance (default https://reachpad.dev) |
REACH_WRITE_TOKEN | bearer token for create/edit/delete (optional; creation is open) |
REACH_READ_TOKEN | bearer token for reading private docs |
REACH_ACTOR | attribution label recorded in the history (default mcp-agent) |
REACH_OWNER_KEY | optional drop key (16-256 chars) used as the default for create_doc + my_docs so this client's docs are grouped and listable; not an edit credential |
Claude Code / Cursor / Claude Desktop (.mcp.json / mcp.json)
{
"mcpServers": {
"reach": {
"command": "npx",
"args": ["-y", "@reachpad/mcp"],
"env": { "REACH_ACTOR": "my-agent" }
}
}
}
Add "REACH_WRITE_TOKEN" / "REACH_READ_TOKEN" to env only if you need gated writes or
private reads, and "REACH_OWNER_KEY" to group this client's docs so my_docs can list
them. Point REACH_BASE_URL at your own deployment to use a self-hosted reach.
Smithery
This package ships a smithery.yaml (stdio). Install via the
Smithery CLI or the reach page on smithery.ai.
Claude Desktop (.mcpb, one-click)
manifest.json is an MCPB
bundle manifest. Build a one-click installer:
npm run build
npx @anthropic-ai/mcpb pack .
Double-clicking the .mcpb installs reach into Claude Desktop; REACH_BASE_URL
defaults to https://reachpad.dev and tokens are optional.
Tools
Read
list_docs: list documents on the server (public; private too with a read token).
get_doc: raw source of a doc (optionally a specific version).
get_doc_meta: a doc's manifest with metadata, version list, and the verification chain.
get_history: full version and change history of a doc.
verify_doc: recompute and verify a doc's tamper-evident hash chain.
get_diff: bounded unified diff between two versions (defaults to previous to head).
Write / create (the aliases share one implementation)
create_doc (aka share_doc, handoff_doc): create a doc; returns its slug, URLs,
and a one-time manageToken. Optional ownerKey groups it under your drop key.
edit_doc (aka update_shared_doc): new version. Pass baseVersion and you get a 409
if it is not the current head, so a stale edit cannot clobber a newer one.
edit_section: edit ONE heading's section, merged onto the head. Agents editing
different sections never clobber each other, so no baseVersion or retry is needed.
Markdown docs only.
Lifecycle
delete_doc: soft-delete (restorable).
restore_doc: restore a soft-deleted doc.
Per-doc capability tokens (scoped / expiring / revocable)
mint_token: hand a peer agent least-privilege access (read / edit / manage)
instead of the root manageToken; the secret is returned once.
list_tokens: list the non-secret tokens minted for a doc.
revoke_token: revoke a minted token by id.
Comments (advisory feedback; does not change content)
list_comments: read the comments people and agents left on a doc.
add_comment: leave a comment with a verdict. approve = looks good;
request-changes = needs a change / out of date; comment = a plain note.
Your documents
my_docs: list the docs grouped under your drop key (the ownerKey you tagged on
create). Accountless grouping, not an edit credential; ownerKey is optional when
REACH_OWNER_KEY is configured.
MIT.