mcpField
S
SPR (Sealed Payment Record)

SPR (Sealed Payment Record)

本地服务
github.com金融数据01 周前更新

关于 SPR (Sealed Payment Record)

SPR 是本地支付记录系统,用公司的密钥封存 AI Agent 的支付意图和结算详情。适用于需要独立验证支付凭证的 Agent 运营者、财务团队和审计人员。

主要功能

  1. 01封存支付意图和结算记录
  2. 02按声明条款检查支付
  3. 03导出争议证据
  4. 04使用公钥验证封存记录
  5. 05本地账簿和 x402 支持

适用场景

  1. 01记录 Agent 的支付用途和限额
  2. 02检查收款方、金额及重复支付
  3. 03准备拒付争议证据
  4. 04验证导出的支付账簿

MCP 相关

本地 SPR MCP 服务提供工具,用于记录支付意图、检查支付是否符合意图,以及记录结算。记录会封存在本地账簿中。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"network-luca-spr": {
"command": "npx",
"args": [
"-y",
"@luca-network/spr-mcp"
],
"env": {
"SPR_AGENT_ID": "<SPR_AGENT_ID>",
"SPR_ENTITY": "<SPR_ENTITY>",
"SPR_DIR": "<SPR_DIR>",
"SPR_TIME_ZONE": "<SPR_TIME_ZONE>",
"SPR_BINDING": "<SPR_BINDING>"
}
}
}
}
启动命令npx -y @luca-network/spr-mcp
需要配置的环境变量
SPR_AGENT_IDThe agent's ID, such as agt_research
SPR_ENTITYThe company the agent pays for
SPR_DIRThe book's folder (default ./spr-books); it holds the company's private key
SPR_TIME_ZONEThe company's time zone for accounting dates (default UTC)
SPR_BINDINGon, to return the nonce to sign with each x402 intent

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@luca-network/spr-mcp0.2.0

工具

9

收录的工具列表 · 更新于 1 周前

参数类型必填说明
railstring否
productstring否可选:购买内容,例如 API 套餐、数据集或 SKU
purposestring是付款原因,用一句话说明。审计人员会阅读此内容。
currencystring否
expires_instring否ISO 8601 时长(PT1H、P3D)
counterpartystring否
max_amount_minorinteger否您可以支付的最高金额
expected_amount_minorinteger否

详细介绍

SPR:密封支付记录

你的 AI Agent 会为数据、计算资源和服务付费,而财务团队和审计员却看不到每笔付款的用途。SPR 会在你的 Agent 付款前后记录每笔付款,并在你自己的机器上用公司的密钥密封记录。任何人都可以检查密封记录。无需信任任何服务,包括 Luca 的服务。

npx -y @luca-network/spr-mcp

免费开源:Apache-2.0,并附带免版税专利承诺(PATENTS.md)。

在你的 AI 工具中使用

以下每种配置都会在你的机器上运行同一个 MCP 服务。设置 SPR_AGENT_ID(你的 Agent)和 SPR_ENTITY(Agent 代表其付款的公司);记录会保存到 SPR_DIR。

Claude Desktop:添加到 claude_desktop_config.json:

{ "mcpServers": { "spr": { "command": "npx", "args": ["-y", "@luca-network/spr-mcp"],
  "env": { "SPR_AGENT_ID": "agt_research", "SPR_ENTITY": "Example Co", "SPR_DIR": "/Users/you/spr-books" } } } }

Cursor:在 .cursor/mcp.json 中添加相同的代码块。

Claude Code:

claude mcp add spr -e SPR_AGENT_ID=agt_research -e SPR_ENTITY="Example Co" -- npx -y @luca-network/spr-mcp

OpenAI Agents SDK 和 LangChain(JavaScript):

import { SprBook, toOpenAIAgentsTools, toLangChainTools } from "@luca-network/spr-sdk";
const book = new SprBook({ dir: "./books", agentId: "agt_research", entity: "Example Co" });
const tools = toOpenAIAgentsTools(book, tool);   // tool from "@openai/agents"; or toLangChainTools(book, tool)

CrewAI、Microsoft Agent Framework、Google ADK 和 Claude Agent SDK(Python):每种工具只需几行代码即可连接到 MCP 服务。请参阅 examples/。

任何其他 MCP 客户端:使用上述两个设置,通过 stdio 运行 npx -y @luca-network/spr-mcp。

Agent 随后会在付款前调用 record_intent,调用 check_payment 检查付款是否在其声明范围内、是否支付给指定的收款方,以及是否尚未支付,并在付款后调用 record_settlement。每条记录都会密封在账本文件夹中。

商户的账本也可以用同样的方式记录收到的付款:保存买家自己的密封意图、买家的身份验证方式,以及订单和支付处理方的引用信息,并导出单笔付款的证据以回应拒付(export_dispute_pack)。

记录会显示:

  • Agent 在付款前声明的内容:付款用途、可支出的最高金额,以及权限的到期时间;
  • 实际支付的金额、所用支付渠道、收款方和付款时间;
  • 付款是否在声明范围内;
  • 对于 x402 付款,链本身是否记录了该笔付款依据哪项声明执行。付款方会将密封意图的指纹签名为付款 nonce。

本仓库包含:

路径内容
SPEC.md格式,草案 1
packages/spr@luca-network/spr,JavaScript 和 TypeScript 的参考库,无依赖项,另含测试向量和 spr-verify
packages/spr-sdk@luca-network/spr-sdk:在本地密封 Agent 的付款,提供用于 x402 的 withLuca(fetch),以及适用于 OpenAI Agents SDK 和 LangChain 的工具
packages/spr-mcp@luca-network/spr-mcp:通过 MCP 服务提供相同的调用,适用于 Claude Desktop、Cursor 或你自己的 Agent(npx @luca-network/spr-mcp)
pythonPython 版 spr-sdk:使用相同的格式和账本

一行代码密封 x402 付款

import { SprBook } from "@luca-network/spr-sdk";
import { withLuca } from "@luca-network/spr-sdk/x402";

const book = new SprBook({ dir: "./books", agentId: "agt_research", entity: "Example Co" });
const pay = withLuca(book, { signer: account });

const res = await pay("https://data.example/prices", {
  luca: { purpose: "Market data for the pricing model", max_amount_minor: 20000, currency: "USDC" },
});
res.luca.record;   // sealed, matched to its intent, bound on chain

不依赖 Luca 检查任何内容

npx spr-verify ./books-export --key company.pem    # a package, and whose it is
python -m spr ./books-export --key company.pem
npx spr-verify --vectors                           # the library against the test vectors
python -m spr --vectors                            # the Python SDK against the same vectors

company.pem 是公司的公钥,需从公司获取,切勿从软件包获取(book.publicKey() 可提供该公钥)。如果不指定 --key,检查工具只会显示软件包与其携带的密钥是否一致,并会明确说明这一点。

安全问题:请参阅 SECURITY.md。

任何语言的实现,只要对 packages/spr/vectors/vectors.json 给出相同的结果,即符合规范。

本地 SPR 与托管版 Luca

这里的程序包运行在你自己的机器上,不会调用 Luca。Luca 的托管服务是另一款产品,你可以将账本发送给它。

本地 SPR(这些程序包)托管版 Luca
运行位置你的机器、你的文件夹、你的密钥Luca 的服务
记录内容Agent 报告的付款前意图和付款后记录相同内容,外加支付通道自身报告的付款记录
检查的限制声明的意图:其上限、到期时间、是否已撤回,以及其指定的收款方;同一张发票是否支付了两次。也可以检查账本自带的 mandate.json(限制、收款方、重复付款的时间窗口)。该文件由保管文件夹的人编写,因此会标记为 authority: "self-declared"财务团队在 Luca 中批准的授权
支付通道的确认无:记录的内容就是 Agent 报告的内容从支付通道读取的付款记录,并标记出任何差异
会计处理无分类到你的账目中(US GAAP、IFRS、税务),将日记账分录发布到你的 ERP,并完成当月结账
证据任何人都可以用 spr-verify 或 python -m spr 检查的封印审计师可以检查的证据,以及当月的审计资料包
费用免费,Apache-2.0Luca 账户

财务部门注册密钥后,只需一次调用即可将账本迁移过去:book.sendToLuca()。Luca 会在存储前检查每个封印。

将账本发送给 Luca(可选)

财务部门只需向 Luca 注册一次账本的密钥(book.registerWithLuca),之后调用 book.sendToLuca() 即可发送账本。Luca 会在存储前检查每个封印,重复发送同一账本不会造成任何变化。请发送邮件至 [email protected] 获取账户。

变更

各版本的变更内容,以及升级时可能需要调整的内容:CHANGELOG.md。

状态

这是该格式的第 1 版草案,也是这些库的 0.1 版。随着大家使用,我们预计会进行调整。请告诉我们有哪些问题或缺失内容:提交 issue,或发送邮件至 [email protected]。

许可证

代码采用 Apache License 2.0:请参阅 LICENSE。Luca 的专利承诺允许任何人在使用或不使用此代码的情况下实现该格式,详见 PATENTS.md。

Luca(luca.network)使用 SPR 托管记录 Agent 付款的会计信息。这包括读取支付通道、按 US GAAP 和 IFRS 分类、将分录发布到 ERP、使用与交易对手约定的标签,以及完成结账。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。