关于 handover.tools
handover.tools 通过短链接在 AI Agent、设备、服务商或人员之间传递工作。它提供一次性文本交接,以及适合多轮交流的端到端加密频道。
主要功能
- 01通过一次性链接传递文本
- 02通过频道交换消息
- 03频道内容端到端加密
- 04为交接设置过期或关闭
- 05无需账号或安装即可使用
适用场景
- 01将手机 Agent 上的工作转到笔记本
- 02把笔记交给另一服务商的 Agent
- 03让两个 Agent 多轮交换内容
- 04无需创建账号即可分享文本
MCP 相关
MCP 端点 `https://handover.tools/mcp` 向 MCP 客户端提供交接工具,支持新旧协议版本。服务也提供 REST 端点和用于频道操作的本地 Python 客户端。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://handover.tools/mcpclaude mcp add --transport http tools-handover-handover https://handover.tools/mcp{"mcpServers":{"tools-handover-handover":{"type":"http","url":"https://handover.tools/mcp"}}}在 Cursor 中打开{"servers":{"tools-handover-handover":{"type":"http","url":"https://handover.tools/mcp"}}}在 VS Code 中打开{"mcpServers":{"tools-handover-handover":{"type":"http","url":"https://handover.tools/mcp"}}}{"mcpServers":{"tools-handover-handover":{"serverUrl":"https://handover.tools/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
8| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| label | string | 否 | 可选的简短提示,显示给获取内容的人,便于确认内容是否正确。最多 120 个字符。 |
| content | string | 是 | 要交接的文本。UTF-8 编码下最大 256 KB。 |
| ttl_minutes | integer | 否 | 内容失效、无法再获取前的分钟数。默认值为 60,最大值为 1440(24 小时)。 |
| burn_after_read | boolean | 否 | 如果为 true(默认值),内容只能获取一次,并会在获取时删除。 |
详细介绍
handover.tools
一个 Agent 编写内容,另一个 Agent 读取内容。你只需在它们之间传递一个 8 个字母的链接。
handover.tools 可以将一项工作从一个 AI Agent 交接给另一个:跨设备、跨供应商,或交给其他人。用手机上的 Agent 进行头脑风暴,然后说“用 handover.tools 交接这项工作”。将它给你的链接(handover.tools/kvmtrhxp)粘贴到笔记本电脑上的 Claude Code 中,那个 Agent 就能在你现有文档所在的位置接手工作。
把想法带到你的上下文中,而不是把你的上下文带到想法中。
无需账号,也无需安装任何东西。任何能够打开网页的 Agent 都可以使用它。
两种模式
| 单次交接 | 通道 | |
|---|---|---|
| 用途 | 交接一段文本 | 两个 Agent 之间进行多轮交接 |
| 加密 | **无。**服务端可以读取内容,所以不要放入机密信息 | 端到端加密(SPAKE2 + ChaCha20-Poly1305)。服务端只会存储密文 |
| 有效期 | 首次读取后失效,或 60 分钟后失效(最长 24 h) | 直到任意一方关闭通道 |
| Agent 需要具备的能力 | 能打开 URL,或具备 MCP | 能运行 Python 脚本(uv run) |
| 由谁决定 | 由用户传递链接 | 用户批准每次发送,并启动每次读取 |
单次交接
curl -X POST https://handover.tools/api/handoff/put \
-H 'Content-Type: application/json' \
-d '{"content":"...","label":"notes"}' # → {"code":"kvmtrhxp", "revoke_key":"...", ...}
curl "https://handover.tools/api/handoff/get?code=kvmtrhxp"
打开 handover.tools/<code> 不会消耗代码。该 URL 会返回操作说明,实际读取则需要发起第二个请求。因此,Slack 或 iMessage 中的链接预览不会在接收方看到内容之前就消耗内容。
通道
curl -so ~/.handoff/channel.py --create-dirs https://handover.tools/client/channel.py
uv run ~/.handoff/channel.py open --name study --brief "..." # machine A: prints a code
uv run ~/.handoff/channel.py join kvmtrhxp --name study # machine B
uv run ~/.handoff/channel.py send --name study --kind question --file q.md
uv run ~/.handoff/channel.py fetch --name study
这 8 个字母由一个 3 个字母的标识名和一个 5 个字母的密码组成。服务端可以看到标识名,并据此查找通道;密码在机器 A 上生成,绝不会上传。密码会用于 SPAKE2,这与 magic-wormhole 使用的是同一种构造方式。服务端永远不会获知密码,因此无法冒充任意一方。/client/channel.py 由 client/channel.py 提供,其 sha256 发布在 /api/discover,你可以据此检查下载的客户端是否与此仓库中的版本一致。
威胁模型(包括我们不作出的声明)见 handover.tools/security。
面向 Agent
- MCP 端点:
https://handover.tools/mcp。它同时支持2026-07-28(现代)和2025-11-25及更早的(旧版)协议时代。 - 纯文本说明:
/llms.txt、/guide.md、/security.md - 完整 REST 架构:
/api/discover
构建方式
- **Cloudflare Python Workers + D1。**一个 Worker,无需其他基础设施。路由、MCP
tools/list和/api/discover均由单一工具注册表(src/registry.py)生成,因此不会出现彼此不一致的情况。 - **分层限制:**每位调用者每天最多 10 次写入和 200 次调用,另设全局每日上限。本网站使用 Workers Free 计划,因此支出硬上限为 $0。
- 字体采用可自托管方式,并嵌入 Worker 中,因此访客的 IP 不会发送给第三方。调用者的 IP 会在 30 天后删除。
src/
entry.py routing, MCP (dual-era), content negotiation
registry.py @tool decorator — one source for REST, MCP and discover
tools/handoff.py, tools/channel.py the two tools
guard.py quotas and the operator blocklist
meter.py per-call metering
page.py, docs.py, style.py the website and docs pages
client/channel.py the local E2EE client, run on the user's machine
tests/ end-to-end, channel and quota test suites
scripts/ dev, deploy, repository checks, operator tools
文档
| 文档 | 内容 |
|---|---|
| docs/system-design.md | 架构:组件、请求流水线、数据模型、流程、信任边界、限制与容量、故障模式、已知缺陷 |
| docs/spec/handoff.md | 一次性契约:操作、代码格式与规范化、原子性、代码链接、限制 |
| docs/spec/channel.md | 通道协议:配对、SPAKE2 参数、密钥调度、线路格式、接收方规则、服务端 API、生命周期。内容足够详细,可据此编写第二个客户端 |
| docs/decisions.md | 为什么这样构建:尝试过什么、否决了什么,以及哪些方案出了问题 |
| CHANGELOG.md | 变更记录,最新内容在前。也可在 handover.tools/changelog 查看 |
规范就是契约。行为变更应先修改规范,再更新代码和测试。
在本地运行
需要 Node ≥ 22 和 Python 3.12。
npm install
scripts/dev.sh # generates src/*_src.py and public/, then runs wrangler dev on :8787
tests/e2e.sh # end-to-end tests against the local server
tests/channel.sh # two isolated clients: pairing, tampering, replay
tests/quota.sh # quota gates (local only: edits counters directly)
scripts/check.sh # repository rules: English only, every Dxx reference resolves
CI 会在每次推送时运行检查和三套测试。
自行部署
- 运行
npx wrangler d1 create <name>,然后将名称和 ID 填入wrangler.toml。 - 将
routes模式改为你的域名。 - 运行
CLOUDFLARE_API_TOKEN=… scripts/deploy.sh
表会在首次请求时创建。scripts/block.sh 提供用于处理滥用举报的运维工具:阻止某个 IP 或 IP 范围写入,并通过链接查找或删除交接内容。
贡献与安全
欢迎提交问题和拉取请求。AGENTS.md 说明了适用于所有人的工作规则,包括编码 Agent:行为变更应先修改 docs/spec/ 中的规范,再更新代码和测试。请私下报告漏洞,详见 SECURITY.md。
许可证
MIT。字体:Atkinson Hyperlegible,SIL OFL 1.1(参见 assets/fonts/LICENSE.txt)。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。