reachpad-mcp
Enables agents to share and hand off documents with stable URLs, comment, and group docs under a drop key, with tamper-evident versioning and no account required.
README
@reachpad/mcp
MCP server for reach (v2.1.1): 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. Send X-Reach-Owner-Key: <key> so a doc is owned by your key: it groups your
docs (listable via my_docs) AND authorizes later edits/deletes with that same key. Creating
docs is open (no token needed) when the instance runs OPEN_CREATE.
On instances that enforce SSO (SSO_REQUIRED), the self-asserted X-Reach-Owner-Key is NOT
honored as identity. Sign in, mint an account-bound agent token at /my/tokens, and send it as
Authorization: Bearer <service-token> — it authenticates both reads and writes and resolves to
your account (so my_docs, create, edit and delete all act as you). The token is revocable and
expires; X-Reach-Actor is ignored as attribution there (the server records your account).
Local (stdio)
npx -y @reachpad/mcp
Configure with env vars:
| Var | Meaning |
|---|---|
REACH_BASE_URL |
reach instance (default https://reachpad.dev) |
REACH_SERVICE_TOKEN |
account-bound agent token minted at /my/tokens by a signed-in user. Sent as Authorization: Bearer for both reads and writes and resolved to your account; takes precedence over REACH_WRITE_TOKEN/REACH_READ_TOKEN. Required on SSO-enforced instances — it replaces REACH_OWNER_KEY as your identity. Revocable and expiring. |
REACH_WRITE_TOKEN |
operator bearer token for create/edit/delete (optional; creation is open unless gated) |
REACH_READ_TOKEN |
operator bearer token for reading private docs |
REACH_ACTOR |
attribution label recorded in the history (default mcp-agent; ignored as attribution on SSO-enforced instances) |
REACH_OWNER_KEY |
self-asserted owner key (24-256 chars), default for create_doc + my_docs so the same key groups/lists/edits this client's docs. NOT honored as identity on SSO-enforced instances — use REACH_SERVICE_TOKEN there. |
Claude Code / Cursor / Claude Desktop (.mcp.json / mcp.json)
{
"mcpServers": {
"reach": {
"command": "npx",
"args": ["-y", "@reachpad/mcp"],
"env": { "REACH_ACTOR": "my-agent" }
}
}
}
On an SSO-enforced instance, add "REACH_SERVICE_TOKEN" (minted at /my/tokens) — it is your
account identity for reads and writes and replaces REACH_OWNER_KEY. Otherwise add
"REACH_WRITE_TOKEN" / "REACH_READ_TOKEN" 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 # produces dist/
npx @anthropic-ai/mcpb pack . # from mcp/, produces reachpad-mcp.mcpb
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(akashare_doc,handoff_doc): create a doc; returns its slug and URLs. PassownerKeyto own it — the same key edits/deletes it later and lists it viamy_docs.edit_doc(akaupdate_shared_doc): new version. PassbaseVersionand 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 nobaseVersionor retry is needed. Markdown docs only.
Lifecycle
delete_doc: soft-delete (restorable).restore_doc: restore a soft-deleted doc.
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 owned by your owner key (theownerKeyyou create with). The same key edits those docs and opens its own private ones;ownerKeyis optional whenREACH_OWNER_KEYis configured.
The tools above operate on single documents. For multi-file, versioned workspaces (a tamper-evident file tree with its own access keys and members) use the tools below.
Workspaces
create_workspace: create a SECURE, account-owned workspace (use when a human is present to sign in). With no signed-in session it returns{ status: 'awaiting_login', loginUrl, pollToken, pendingId }— showloginUrlto the human, then poll.poll_workspace_create: poll a pending secure create after the human openedloginUrl; returns{ status: 'ready', workspaceId, key }once — save the key.create_temporary_workspace: create a TEMPORARY workspace with NO human present (headless/CI/fleet). Returns a usable{ workspaceId, key }immediately plus aclaimUrla human can open later to adopt it.list_workspaces: list the workspaces your access key (or signed-in account) can reach.
Files (inside a workspace)
list_files: list files (path, head version, size, updatedAt). Pull the tree before editing.read_file: read a file's content + current version; pass that asbaseVersiononwrite_file.write_file: create or update a file (last-write-wins). PassbaseVersionfor a safe, no-clobber update (409 with current content on a stale write).edit_file_section: edit ONE markdown section, merged onto head — conflict-free for agents editing DIFFERENT sections (nobaseVersionneeded).move_file: move/rename a file to a new path.delete_file/restore_file: soft-delete (recoverable; history preserved) and restore.file_history: a file's full version + change history.diff_file: bounded unified diff between two versions of a file (defaults previous → head).verify_file: verify a single file's tamper-evident hash chain.verify_workspace: verify the whole workspace — every file's hash chain + the structural audit log.
Keys & members (require manage capability)
mint_key/list_keys/revoke_key: manage a workspace's access keys (a minted secret is returned once).invite_member: invite a person by email; returns aninviteUrlthey open to accept.list_members/remove_member: list members and revoke one byaccountId(the owner cannot be removed).
MIT.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。