中文 | English
TapeAPI
每个 Agent,都能被陌生人核验。 每次 AI 调用都附一张签名回执:谁回答的、回答的是哪个请求、回了哪些字节、声称用了多少 token、收多少钱,任何人都能核验;3.0 起,一个 Agent 是谁、守什么规矩,别人也能在自己的机器上重新查一遍。
[CI]
[Code: MIT]
[Spec: CC0-1.0]
[手册]
[Playground]
[Status]
English · 网站 · 手册 · 指南 · 规范 · 示例 · 更新日志 · 路线图 · 升级到 2.0 · 升级到 3.0
它是什么
TapeAPI 是 TapeOut 的签名 API 层。在你的 OpenAI 或 Anthropic 兼容接口前面加一个旁路,每个回答都会带上一张任何人都能核验的回执;你的用户照旧用官方 SDK,只改 base URL,不改代码。同一套链上身份和签名,也用在 MCP 工具、容器之间端到端加密的通道与群聊上,支持 BNB Chain、X Layer 和 Base。3.0 又加了四样,都能在你自己的机器上重新核对:身份(Agent 护照)、工具(钉在链上的 MCP 工具定义)、账目(回执、对账、花费清单、本地预算)和规则(策略电路)。
现状
最新发布的版本是 3.0.0(2026-11-06)。 今天上线的一切都免费。**稳定的:**除标注 @experimental 或 @internal 的以外,其余全部;按 3.0 文档写的代码,在所有 3.x 版本里都能继续工作。实验性的,不在兼容承诺之内:三个新包(@tapeapi/interop、@tapeapi/passport、@tapeapi/policy-circuit,都是 0.1.0)、@tapeapi/sdk/agent、@tapeapi/sdk/review,以及没有部署的付费调用(TAPI-22):托管合约未经审计、未部署。**支持期:**3.0.0 发布后 2.x 继续获得 6 个月的安全修复,1.x 到 2027-04-12,0.x 的包没有支持期(修复只随新的 0.x 版本发布)。所有代码和合约都没有经过第三方审计。**安全说明:**1.0.0 至 1.4.0 的流式 AI 回执核验,在特定分块下可能把被截断或被注入内容的流显示为“已核验”;1.5.0 已修复(更新说明)。
从这里开始
-
你在运行 AI 服务(new-api、网关、自建模型):在 examples/new-api-sidecar 里 docker compose up,到持有人操作台发布价目表,把用户的 base URL 指向旁路,再跑一遍 tapeapi-doctor <你的名字>。指南:AI 服务方指南。
-
**你在调用服务:**从发布页安装 SDK(Node.js 22 或以上),然后用 tapeapi-verify <服务方名字> 核验每个回答(Claude Code 和 Codex 可以指向它),或在代码里用 createVerifyingFetch。指南:调用服务;具体命令见试一试。
-
**你在做 Agent,或要雇一个 Agent:**让它调用之前先查一遍。tapeapi passport <名字> 解析它的 Agent 护照(需要同一发布里的 passport 包),tapeapi receipts statement 汇总它的回执声称花了多少。指南:Agent 护照、策略电路、对账、容器代理。
3.0 新增
3.0 只有一个主题:让一个 Agent 调用你之前,你自己先查一遍。新增的部分都是实验性的,不在兼容承诺之内;2.x 能做的,3.0 照样能做,只有下面「升级」里的五项修改除外。线上服务的回答与 2.5.0 相同,只有版本号不同。
- Agent 护照(
tapeapi passport <名字> 与 @tapeapi/passport 0.1.0)。只读地解析:同一个钱包持有一个 ERC-8004 身份和一枚 TapeOut 电路,并且持有人公开了这层关联。所有读取都在同一个钉住的区块上,至少两家运营方的节点必须一致;结果是一个状态词(CONFIRMED、BROKEN、UNAVAILABLE……)加一个具名原因,读取不一致就是「不知道」,绝不猜。它跟随未合并的草案 TAPs #83(已提交,评审中);本包按头提交 cae25e6 的文字实现,草案此后又改过,每个结果都带着它读取时依据的头。*限制:*护照不说明 Agent 跑什么代码,也不说明它诚实与否,主网上目前还没有已知的 CONFIRMED 护照。Agent 护照
- 策略电路(
@tapeapi/policy-circuit 0.1.0)。委托人把花钱的规则写成一个小电路,按哈希固定,用签名绑到一个账户;对方在自己机器上把这笔请求重跑一遍,守门方的 admit() 只要拿不准就拒绝(没有电路、哈希不对、绑定过期或被撤销、换了持有人、读不到撤销记录)。它跟随未合并的草案 TAPs #84,头提交 0b73174(已提交,评审中,目前转为 draft PR)。*限制:*这是链下检查,只约束去检查它的一方,不部署任何东西,也不发交易。策略电路
- 花费清单与本地预算。
tapeapi receipts statement 按服务、模型、UTC 天汇总回执所声称的花费,并列出你的限额;客户端预算会在调用发出之前就拒绝会超限的调用。两者都建立在 2.x 已有的签名回执与 tapeapi reconcile 之上,那些格式不变。*限制:*回执只证明签名方说了什么,花费清单没有任何人签名。对账
- 3.0 里另外几项实验性功能:容器应用之间的访客授权(
@tapeapi/interop 0.1.0,是原型,背后没有任何 TAP,见 TAPI-28);给有界代理用的 x402 批量结算后端(enforcement: 'x402-batch',默认关闭,付款方只能是普通钱包,没有在主网上运行过);收据引用提案(ai.receiptRef,默认关闭)。每个付费调用现在都先核对托管的代币,核对不了就以未签名的 503 拒绝。托管合约仍然未经审计、未部署。更新日志
提交 TAP 草案不等于被采纳:#83 和 #84 只是已提交,尚未合并。
升级
五项破坏性修改:Node.js 22 或更高版本;createAIProxy 默认拒绝未声明的格式;createMcpProxy 拒绝你没有列出的浏览器来源;tapeapi-verify 默认严格;MCP 代理默认先协商上游的版本。除第一条外,每一项都有保留 2.x 行为的选项。升级到 3.0
各部分怎么配合
回执能证明什么,不能证明什么
回执能证明:谁回答的(电路持有人在链上委托的密钥)、回答的是哪个请求(请求的确切字节)、回了什么(回答的确切字节;流式回答则是按固定规则读出的事件数据),以及声称的用量和价格(按链上价目表计算)。
回执不证明实际跑的是哪个模型:服务方可以把便宜模型的回答标成贵的。签名带来的是可追责:回执无法抵赖,任何人用抽检探针发测试请求并公开结果,都会留下证据。回执只证明签名方说了什么。
试一试
**一个带签名的回答。**公共服务 11.1013.tape 提供 8 个免费的读取方法,每个都钉在一个 BNB Chain 区块上:
curl 只显示签名信封,不做任何核对;核对交给 SDK。SDK 还没发到 npm,从 GitHub Release 安装(Node.js 22 或以上):
服务端包(@tapeapi/server:服务提供方、AI 旁路、MCP 代理)依赖这个 SDK,而 SDK 也不在 npm 上,所以单独安装服务端包会报 404:请用一条命令同时安装两者,npm install https://github.com/BruceLanLan/tapeapi/releases/download/v3.0.0/tapeapi-sdk-3.0.0.tgz https://github.com/BruceLanLan/tapeapi/releases/download/v3.0.0/tapeapi-server-3.0.0.tgz。
Claude Code 和 Codex 自己读不到回执。在本机开一个核验代理,再把它们指过去:
tapeapi-verify 会打印一行 resolution:,写明用了哪种解析;加 --no-conform 用 1.x 的方式。照原样运行 tapeapi-verify 42.1013.tape 会停下:这个名字是示例名,链上没有以它发布的服务。不依赖任何服务方、想看回执端到端核验通过,就在本仓库的检出里跑本地试跑(不需要密钥、电路,也不花钱),先在根目录安装一次依赖:
自己要做 AI 服务?从从零到上线开始;服务方的检查工具 tapeapi-doctor(实验性)在同一个发布包里。
**MCP。**同样的 8 个读取方法也是 MCP 工具,地址是 https://api.tapeapi.fun/mcp,每个结果都带签名回执:
什么都不想装:调试台在浏览器里跑同一个 SDK。
更多试法:解析失败怎么看、本地链、在 OpenAI SDK 里核验 AI 回执
解析失败时,e.data.status 用 TAP 自己的名字说明原因:
**本地服务、本地链或你自己的部署。**开发模式只要 dev;不是 TAP-10 列出的 TapeOut 链,要传 conform: false,否则 createTapeAPI() 直接报 INVALID_ARGUMENT:
**AI 回执。**把 createVerifyingFetch 接进官方 OpenAI SDK(npm install openai;Anthropic SDK 同样接受 fetch)。把 42.1013.tape 换成服务方的 TapeOut 名字:
链上还没有外部服务方发布价目表,所以这段代码是对 examples/ai-proxy 里的参考旁路(本地开发模式)实际跑通的;接真实服务方时只换名字。
已上线的服务与承诺
- **已上线,免费,无需注册:**公共服务
api.tapeapi.fun(8 个方法)和它的 MCP 端点,公共中继 relay.tapeapi.fun(relaySend、relayHandshake、relayRecv),ChannelBus,以及网站上的持有人操作台、回执核验页、调试台和状态页。
- **可用,由你自己部署:**AI 签名旁路与 new-api 一键包、MCP 签名代理、
tapeapi-verify、tapeapi-mcp、抽检探针,以及 SDK 里的群聊一步投递(deliverGroupUpdate)。
- **实验性,未部署:**付费调用与托管合约(TAPI-22,§3.6 为美元报价、BEM 结算)、服务目录、可由电路验证的方法(TAPI-25)。
- **实验性,在 SDK 里:**容器代理(
@tapeapi/sdk/agent:阶段 0 自 1.7 起,有界代理自 2.0 起,只在本地链可用)与评价(@tapeapi/sdk/review,自 2.0 起),不受兼容承诺约束。
- **3.0 承诺什么(3.0.0,2026-11-06):**按 3.0 文档写的代码,在所有 3.x 版本里都能继续工作;除了标注
@experimental 或 @internal 的,其余全部是稳定的;三个新包(@tapeapi/interop、@tapeapi/passport、@tapeapi/policy-circuit,都是 0.1.0)不在承诺之内。3.0 有五项破坏性修改,除 Node.js 22 下限外,每一项都有保留 2.x 行为的选项。3.0 没有任何 TAP 收紧成为默认,规则照旧:放宽与新增状态名在 3.x 次版本里生效,收紧先作为可选 profile、默认到 4.0 才切。conform: false 整个 3.x 保留(已弃用,最早 4.0 才移除);labels: 'v1' 保留(已弃用)。3.0.0 发布后 2.x 继续获得 6 个月的安全修复,1.x 到 2027-04-12。从 2.x 升级:升级到 3.0。
- **我们不做的事:**不替任何人托管旁路(它会经手你用户的 API 密钥,只能你自己部署);不发币;不帮任何人绕开上游服务商的封禁或地区限制(TapeAPI 只面向在上游条款范围内经营的服务方)。
- **链:**BNB Chain(chainId 56)什么都能做,将来的支付也只在这条链上。X Layer(196)和 Base(8453)只读:身份、解析、回执和 MCP 核验。X Layer 只有两家独立的 RPC 运营方,在 2.0 默认下每次严格读取两家都必须作答。
- **没有经过第三方审计。**测试:JavaScript 测试(
npm test)、合约测试(forge test),另有一份独立的 Python 实现核对每一处
签名、哈希和编码(python3 spec/vectors/verify.py);三者在每次推送时都由 CI 运行。在 3.0.0 的发布提交上,本仓库的 npm test
共 2,702 项 JavaScript 测试:2,698 项通过,4 项跳过,0 失败。
规范与 TAP 状态
这些是 TapeAPI 自己的规范,不是 TAP。TapeOut 的标准以 TAP 的形式发布,由 TapeOutProtocol/TAPs 的编辑按 TAP-01 编号。我们就其中部分内容提交了 14 份 TAP 草稿:8 份在 2026-09-30 至 10-01,2 份关于容器代理格式在 2026-10-04 与 10-05,2 份在 2026-10-08(付费凭证、评价),2 份在 2026-10-13(托管通道、有界代理)。其中 7 份已合并为 Draft(TAP-11、TAP-13、TAP-14、TAP-15、TAP-16、TAP-17、TAP-18;合并不等于被采纳),另 7 份已提交(评审中):#20、#28、#49、#52、#54、#59、#60(#60 目前转为 draft PR)。另有 1 份 Information 草稿 #61,已提交(评审中)。编辑审的是格式而不是方案本身(TAP-01 §4),所以合并为 Draft 不等于被采纳。TAPI-20 至 TAPI-27(含 TAPI-26、TAPI-27 的第 2 版)仍是兼容承诺的依据。
上面没有计入的:另外 4 份与 3.0 有关的较晚草稿,都没有合并。代理护照 #83,已提交(评审中),实验性的 @tapeapi/passport 跟随它;策略电路闸门 #84,已提交,目前转为 draft PR,实验性的 @tapeapi/policy-circuit 跟随它;电路任务 #85,已提交,目前转为 draft PR,只有一篇指南;容器服务调用的访客授权 #77,已提交(评审中)。@tapeapi/passport 实现的是 #83 在头提交 cae25e6 时的文字;草稿此后已有更新(现为 cbf4e03),跟进新文字的包已列入计划。实验性的 @tapeapi/interop 实现的是我们自己的 TAPI-28(不是 TAP),而不是 #77。
TAPI-22(§3.1 至 §3.6 以外)、TAPI-24、TAPI-25 没有提交。2026-11-03 拿到编号的五份草稿(TAP-14 至 TAP-18)上面已按编号称呼;其余的仍按拉取请求称呼,直到编辑给它们编号。
规范中英双语,以英文为准。**TAPI-1 与 TAPI-20 至 TAPI-27 是 TapeAPI 自己的文档名,不是 TAP 编号。**含有旧名字的冻结常量(例如第 1 版的 TAP-26/…、TAP-27/… 标签)永不改变;第 1 版保持 Stable (v1),最早在第 2 版成为 Stable 12 个月之后才可能撤回(TAPI-1 §4.1)。
更早的版本
2.0 引入过什么、承诺过什么,全部保留在这里。从 2.x 升级请看 3.0 的升级指南。
2.0 新增:标准即默认
2.0 新增
2.0 只有一个主题:我们向 TapeOut 官方 TAP 流程提交的规则,以及 TapeOut 自己规定的规则,就是你什么都不传时 SDK 的行为(有一个已知例外,见下)。每一项破坏性修改和对应的改法见从 1.x 升级到 2.0;TAPI-20 至 TAPI-27 的线上格式与冻结常量一个字节都不变,所以 2.0 的客户端照样核验所有 1.x 的清单、委托、签名回答和回执。不传任何选项,createTapeAPI() 就按 TapeOut 官方 TAP 的规定解析服务:TAP-10 v1.1 §3 至 §7 与 TAP-11 §2,所有读取钉在同一个区块上,链 ID 与持有人要所有节点一致;名字从未开通(not-opened)、未激活或付费到期(unpaid)、TapeOut 的站点存储或付费合约换成了 SDK 不认识的实现(store-changed),都会得到一个明确的状态,而不是悄悄解析成功。TAP-11 与 TAP-13 是我们起草并提交的草稿,编辑已把两份合并进官方仓库,状态是 Draft;合并为 Draft 不等于被采纳。TAP-10 与 TAP-11 还是 Draft,默认按一条规则跟随它们的文本:放宽与新增状态名在 2.x 次版本里生效,收紧先作为可选 profile、默认到 3.0 才切。要 1.x 的行为,只需一个选项 conform: false(已弃用,整个 3.x 保留,最早 4.0 才移除)。一个已知例外:不开 allChains 时,"处理器合约#ID"会被拒绝,见升级到 2.0。2.0 同时把私密通道与群聊的标签换成 TAPs 编辑要求的 tape-channel/、tape-group/。
标准即默认
TAP-10 与 TAP-11 是合并为 Draft 的(合并不等于被采纳),文本还可能改。改动时:放宽与新增状态名在 2.x 的次版本里直接成为默认;收紧先作为可选的新 profile 提供,默认到 3.0 才切换。状态名只增不改。conform: false 完全不跟随 TAP。默认如何跟随官方 TAP 的变化
- 按
e.data.status 分支,不要按错误信息:状态名就是 TAP 里的小写名(unsupported、hub-changed、container-mismatch 是 TapeAPI 自己的名字)。状态名只增不改;data.status 在 2.0 里仍是实验性的(它跟随的是 Draft),待 TAP-11 评审期满且无未解决的异议后再考虑升为 Stable。not-opened、unpaid 要服务方自己处理(不要重试),store-changed 要升级 SDK(临时办法是 conform: false),unavailable 是节点问题(重试,或加一个自己的运营方)。
- 命令行跟着变。
tapeapi-verify、tapeapi-mcp、tapeapi-doctor 都用新默认,输出里写明用了哪种解析,加 --no-conform 回到 1.x 的方式。在默认下,tapeapi-doctor 对未激活的名字判为失败(默认客户端解析不了它);加 --no-conform 仍只是警告。
- **代理工具包也一样。**不给
resolve 时,createAgentKit(@tapeapi/sdk/agent,实验性)按 TAP-11 §2 解析代理与服务方。
dev: true 就等于 conform: false,不出弃用提示:开发模式本来就不核对链上身份。
- **代价。**在 BNB Smart Chain 上用默认节点实测:冷客户端解析一个服务,约 45 次 JSON-RPC 调用,1.x 约 24 次(约 2 倍);同一客户端再解析一次约 36 次,1.x 约 9 次(约 4 倍)。公共节点限流时,先给
rpcUrls 加一个自己的运营方。
- **我们怎么核对的。**637 个用例的差分测试:
conform: false 在全部 637 个用例里与 1.8.1 的默认发出相同的请求、顺序相同、结果相同(只允许两处差异:弃用提示,以及 chain.channelKeys 报告的收件房间变成第 2 版的房间)。我们自己的 11.1013.tape 与 12.1013.tape 按 TAP-10 的方式在主网上解析正常,两者都已激活,付费到 2036-08-09。
- **如果你提供服务:**用 2.0 的安装跑
tapeapi-doctor <你的名字>。前 7 项(name 至 delegation)通过,2.0 的客户端就能解析你;之后各项是针对 AI 服务的,不是 AI 服务的会在 ai-field 失败,与 1.x 相同。名字的付费一旦到期,2.0 客户端看到的是 unpaid,回执核验页也不能再核验你的服务在付费期间签发的回执。
其它破坏性修改
- **私密通道与群聊默认使用 TAPI-26 v2 与 TAPI-27 v2:**标签以
tape-channel/、tape-group/ 开头,不再是 TAP-26/、TAP-27/,这是 TAPs 编辑在评审草稿 #12(现为 TAP-14)、#20 时提出的要求。labels: 'v1' 选用第 1 版(2.x 内弃用,不删除)。两个版本不互通,也不会失败放行:不一致的双方会超时,或得到一个写明不一致的错误(data.labels、data.peerLabels)。群聊终身保持创建时的版本,1.x 的群恢复后仍是第 1 版。通道记录、中继和 ChannelBus 都不变,持有人不需要重新签任何东西。
TapeAPIError 去掉了弃用的顶层别名(即 e.data 里各字段的顶层别名):读 e.data.*,1.0 起所有细节都在那里(完整列表见升级指南)。
- 通道模块把调用方自己的选项或参数错误报为
INVALID_ARGUMENT,与其它模块一致;TAPI-26 数据本身出错仍是 CHANNEL_INVALID。
有界代理(实验性,主网不可用)
有界代理(实验性,主网不可用)
**实验性,在 2.0 首次公开。**AI 代理可以替容器花钱,但容器最多会亏多少,由托管合约算死、任何人都能在链上核对:每个服务一条托管通道,代理用一把一次性的会话钥匙,限额器绝不签出超过上限的凭证,重启后接着处理订单,钥匙与订单记录加密保存。边界如实说:托管合约未经审计、未部署,所以今天在主网上不可用;只在本地链与测试中可以验证;@tapeapi/sdk/agent 不受兼容承诺约束。
阶段 0(1.7)只记录谁可以替哪个容器做哪件任务,什么都不强制执行。有界代理是阶段 1:代理可以替容器花钱,而容器最多会亏多少,由托管合约算死、可以在链上核对。电路持有人为代理可以付费的每个服务各充值一条托管通道,并把一把只为这份授权书生成的钥匙授权为这些通道上的会话钥匙,有效期到授权书到期为止。代理的钥匙泄露或代理作恶,损失最多是放进这些通道的钱,而且只能付给授权书点名的服务。
- 核验。
verifyMandate 与 verifyTaskThread 加 { enforcement: 'escrow-channel' } 时,在同一个钉块上读取每条有上限的通道,全部读数通过才报告“已强制执行”;链上真正限住的始终是通道余额(bound: 'channel')。
- 持有人的计划。
holderPlan 从链上读取事实,给出未签名的 approve、fund、authorizeSession 交易,从持有人钱包或经容器发出;afterPlan 读回核对,closeOut 取回剩余的钱。会话历史防止同一份计划跑两次、给同一把钥匙充两次值。
- 代理自己的限额。
createSpendLimiter 绝不签出累计超过“开始时通道的 claimedOf 加上限”的凭证;默认拒绝单次超过上限 10% 的调用。
- **重启。**配一个钥匙保险箱(
passphraseKeyVault:scrypt 与 XChaCha20-Poly1305),代理的会话钥匙,以及 examples/agent-service 里的订单记录,都加密保存;resume 在重启后接着处理订单,已停止、已撤销或已过期的订单绝不恢复。
- **交付里的钱。**交付可以附上代理签名的花费声明,与链上读数和回执逐项对账。
**边界。**它依赖的托管合约(TAPI-22,contracts/src/TapeAPIEscrow.sol)未经审计、未在任何链上部署,SDK 的已审计托管列表是空的,所以在主网上都不可用。它在 SDK 的假链上验证(node --test examples/agent-service/agent-service-spend.test.mjs),交易与凭证另在本地的托管合约副本上验证(cd contracts && forge test --match-path 'test/Phase1*')。它是实验性的,不受兼容承诺约束。阶段 1 的 TAP 草稿已提交为 TapeOutProtocol/TAPs#60(已提交,目前转为 draft PR),它依赖的托管接口已提交为 #59(评审中)。
2.0 里另外两项实验性功能、更早的功能,以及 2.0 承诺过什么
2.0 里另外两项实验性功能
- 容器代理(实验性)。阶段 0(1.7):持有人签名的授权书、从报价到验收的任务线程、只读的付款核验,不需要新合约,不做强制执行。有界代理(2.0):写了金额的授权书由托管通道强制执行,只在本地链与测试中可用。容器代理 · 有界代理
- 美元报价、BEM 结算(TAPI-22 §3.6;TAP 草稿 #52,已提交,评审中)。清单可以用美元给方法定价;服务方在签名的报价里给出 BEM 汇率,客户端签凭证之前对照链上的参考池核对,每个收费的回答都附一张签名的收费记录。方法的
priceBEM 仍是单次调用最多花多少。没有 usdPricing 的清单,回答与付款逐字节照旧。托管合约没有部署,所以不收任何费用。
- 容器之间的评价(
@tapeapi/sdk/review;TAP 草稿 #54,已提交,评审中)。评价由评价方的持有人或其委托的密钥签名,有证据才计入:评价方收到过的签名回答,或两个容器之间的任务线程。汇总只数不同的评价方与持有人,从不按金额加权。tapeapi-verify review <名字> 可以把它们打印出来。
- **更早的功能,留作记录。**按 TapeOut 官方 TAP 解析(1.4 起以可选的
conform: 'tap10' 提供,2.0 起为默认);MCP 工具与私密通道、群聊(1.0 起稳定);流式 AI 回执,用量也能核验(1.5 至 1.6):被截断或被追加内容的流,回执核验不通过;可选的 requestUsage 把流式 OpenAI Chat 回答的用量放进签名的流里,像整段回答一样核对(它不证明上游自己的计数),见流式 Chat 的用量:三条路。指南:MCP · 私密通道 · 群聊。
2.0 当时的承诺,照原样记录:
- 2.0 承诺过什么(历史): 按 2.0 文档写的代码,在所有 2.x 版本里都能继续工作;除了标注
@experimental 或 @internal 的,
其余全部是稳定的;其中包括 data.status、SiteStatus 与 svc.conform,它们跟随的是 Draft:TAP-10 与 TAP-11 还是 Draft,默认按一条规则
跟随它们的文本,放宽与新增状态名在 2.x 次版本里生效,收紧先作为可选 profile、默认到 3.0 才切。conform: false 与 labels: 'v1' 已弃用,
整个 2.x 保留。从 1.x 升级:升级到 2.0。
隐私,如实说
- **受保护的:**通道和群聊的内容(端到端加密);AI 回执只带哈希,经 SDK 或
tapeapi-verify 发出的请求还会追加 128 位随机空白,短提示词没法靠猜哈希对上;MCP 核验链接默认只带哈希;SDK 的 busPrivacyReader(实验性)读取整个 ChannelBus 后在本地筛选,节点看不出你的房间。
- **藏不住的:**服务方看得到它处理的一切(你的请求、IP 和 API 密钥);公共 RPC 节点看得到你的 IP 和你在核验哪个服务;中继和链看得到通道的房间、时间和大小;链上的一切都是公开的,将来的付款也一样。2.0 默认仍不开
allChains,因为一开就会把你的查询发给其它链的公共节点。因此"处理器合约#ID"字符串默认被拒绝(TAP-11 §2.1 的已知例外,见升级到 2.0)。
费用
无强制协议费;默认 1% 维护贡献,任何服务方都可以关闭;运营方没有费率开关。这 1% 只在付费通道结算时从服务方所得中扣,用户的价格不变。服务方也可以设得更高,但不超过合约上限 20%。付费托管合约尚未部署,所以今天所有调用都不收费。AI 服务方照旧在链下向用户收费;清单里的价格是公开的声明,不经过结算。送审的托管合约计划首先托管 BEM,USDT 锚定币与 WBNB 按需(TAPI-22 §3.5)。详见 docs/FEES.md。
仓库
sdk/ @tapeapi/sdk(解析、调用、验签、AI 回执、通道、群聊、MCP、容器代理、评价)· server/ @tapeapi/server(服务端、AI 旁路、MCP 代理)· contracts/(ChannelBus,以及实验性的托管合约和服务目录)· spec/(各规范、测试向量、Python 验证器)· examples/ · conformance/ · site/(网站)· docs/。合约地址见入门。
安全问题请按 SECURITY.md 私下报告。欢迎提 issue 和 pull request,见 CONTRIBUTING.md 与行为准则。
许可证
代码采用 MIT(LICENSE):contracts/、sdk/、server/、examples/、conformance/、scripts/、site/。spec/ 里的规范采用 CC0-1.0(LICENSE-SPEC)。
致谢
为 TapeOut 做一个服务层的想法,也就是“DeWEB 是网站,TapeSend 是消息,TapeAPI 是服务”,来自 @Theairresearch。TapeAPI 的收入自 2026-10-05 起,按季度扣除第三方现金成本后,余额的 10% 永久归他们(口径见 BUSINESS.md)。
构建于 TapeOut 与 TapeKit 之上。