关于 Shoon A2A Trust Services (pilot)
Shoon A2A Trust Services 是仅限本地测试的沙盒,提供用于声明核查、引用审计、信息提取、预警和工作审计的五项 Agent 服务。其结果仅限证据检查,支付语义为模拟,不代表真实验证或交易。
主要功能
- 01提供五项 Agent 信任服务
- 02报价并执行服务请求
- 03签名交付物和任务访问令牌
- 04持久化配额与管理终止开关
- 05通过 Streamable HTTP 提供 MCP
适用场景
- 01检查引用文本是否出现在来源中
- 02审计引用结果与 HTTP 状态
- 03运行沙盒中的 Agent 服务请求
- 04使用任务级访问权限查看签名结果
MCP 相关
通过无状态 Streamable HTTP 端点将五项服务作为 MCP 工具提供。客户端可使用单步 API 密钥流程,或先报价再通过沙盒支付标头授权调用。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
服务地址
https://shoon-a2a-sandbox.onrender.com/mcp一键复制安装命令
Claude CodeTerminal
claude mcp add --transport http shoonenterprises-shoon-a2a-sandbox https://shoon-a2a-sandbox.onrender.com/mcpCursor.cursor/mcp.json
{"mcpServers":{"shoonenterprises-shoon-a2a-sandbox":{"type":"http","url":"https://shoon-a2a-sandbox.onrender.com/mcp"}}}在 Cursor 中打开VS Code.vscode/mcp.json
{"servers":{"shoonenterprises-shoon-a2a-sandbox":{"type":"http","url":"https://shoon-a2a-sandbox.onrender.com/mcp"}}}在 VS Code 中打开Claude Desktopclaude_desktop_config.json
{"mcpServers":{"shoonenterprises-shoon-a2a-sandbox":{"type":"http","url":"https://shoon-a2a-sandbox.onrender.com/mcp"}}}Windsurf~/.codeium/windsurf/mcp_config.json
{"mcpServers":{"shoonenterprises-shoon-a2a-sandbox":{"serverUrl":"https://shoon-a2a-sandbox.onrender.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
全部服务地址
Streamable HTTP
https://shoon-a2a-sandbox.onrender.com/mcp需要授权工具
5| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | object | 否 | |
| input.claims | array | 是 | |
| quote_id | string | 否 | 高级机器流程:此服务的 POST /quote 返回的 quote_id。提供后将使用该 quote 的输入,并且 X-PAYMENT 标头必须授权该 quote。免费测试阶段无需使用——直接传入 arguments.input 即可。人工流程(X-API-KEY):传入 input。 |
详细介绍
A2A 服务系统 — 第 0 阶段沙盒(仅限本地测试)
测试沙盒。 所有内容均免费($0.00),采用测试网语义,仅绑定到 127.0.0.1。没有真实加密货币、真实付款或外部账户,也不会发生资金转移。这里的任何内容都不公开,也不用于商业用途。
运行
cd ~/workspace/compound/a2a-economy/sandbox
pip3 install --user --break-system-packages -r requirements.txt
# admin secret is REQUIRED — the server refuses to start without it
export A2A_SANDBOX_ADMIN="$(cat ~/.config/a2a-sandbox-admin)"
python3 -m uvicorn app:app --host 127.0.0.1 --port 8741
生成一次密钥(以仅所有者可访问的权限存储,绝不出现在聊天或日志中):
mkdir -p ~/.config
python3 -c "import secrets; print(secrets.token_hex(32))" > ~/.config/a2a-sandbox-admin
chmod 600 ~/.config/a2a-sandbox-admin
然后在另一个终端中:
# machine-readable catalog (Tier A)
curl -s http://127.0.0.1:8741/v1/catalog.json | head -c 600
# public free-slot counter
curl -s http://127.0.0.1:8741/v1/slots
# synthetic buyer harness (full loop per service, green/red per stage)
python3 harness.py
# human test page
# open http://127.0.0.1:8741/test.html in a browser (test API key prefilled)
真实功能与模拟功能
真实(协议已完整实现):
POST /quote— 免费、零代币、基于公式生成绑定报价,有效期 15 分钟,并进行输入上限和策略检查,同时写入账本POST /execute— 未付款时返回 402(x402 格式的响应);模拟先提交后结算的授权验证(结构、报价匹配和validBefore过期时间);返回 202 + task_id,使用异步作业队列,对交付物进行 Ed25519 签名,并生成结算事件- 配额执行:必须提供身份;每个钱包或 API 密钥每天最多 10 个任务;每项服务每天最多 20 个任务,并带有公开的名额计数器;全局每日代币预算达到上限时自动暂停
- 将终止开关作为功能标志(
POST /v1/admin/kill/POST /v1/admin/resume,通过A2A_SANDBOX_ADMIN环境变量设置令牌——未设置时,服务器会拒绝启动);不会自动恢复 - SSRF 防护:解析任务提供的 URL,并要求每个地址都必须是公网地址(拒绝环回地址、专用 LAN、链路本地和云元数据范围,包括重定向访问到的地址);拒绝非 http(s) 协议
- 仅追加的 JSONL 账本 + CSV/JSON 税务导出模拟接口(
/v1/ledger/export) - 按任务隔离隐私(针对每位买家锁定): 每个任务在接受时都会获得一个随机的 256 位
read_token(在 202 响应中返回——请保密,并将其视同密码)。任务状态、交付物、签名检查以及该任务的账本条目,都必须通过Authorization: Bearer <token>请求头提供令牌才能访问。此处设计为仅使用请求头:若将令牌放入 URL,就会记录在服务器访问日志中。未提供令牌 → 401。完整账本(所有买家的数据)仅管理员可访问(X-Admin-Token请求头)。任务和报价 ID 均为 128 位随机值;管理员令牌使用恒定时间比较。 - 持久化配额: 使用计数器和暂停状态保存在 SQLite(
data/quotas.db)中——重启不再会重置每日上限或终止开关状态。 - MCP(模型上下文协议):
POST /mcp使用 Streamable HTTP(无状态 JSON-RPC 2.0):initialize、tools/list(列出 5 项服务)、tools/call(同步执行报价 → 接受 → 等待,并返回已签名的交付物)。支持两种身份验证流程:人工单步流程(X-API-KEY请求头 +arguments.input),或机器双步流程(先调用POST /quote,再通过arguments.quote_id和用于授权该报价的X-PAYMENT请求头调用tools/call)。调用计入mcp来源流量。 - 来源跟踪: 每个已接受的任务都会按渠道统计——
human、machine、mcp——并与配额用量一同显示在仅管理员可访问的GET /v1/admin/stats中。 - Tier A 机器可读文件:
/v1/catalog.json、/.well-known/agent.json、/llms.txt、/v1/openapi.json、/robots.txt(允许 AI 爬虫访问) - 诚实的服务逻辑:真实获取用户提供的 HTTPS URL;结果会明确标注
模拟功能:
- EIP-3009 授权为模拟实现(
X-PAYMENT请求头中使用 base64 JSON)——验证只检查格式、报价匹配和过期时间,不验证链上签名 - 结算是采用“测试网语义”的 $0.00 账本事件——不会与区块链交互,也没有水龙头资金
- 代币预算为模拟值(根据输入字节数估算),并非真实的大模型代币
- 新闻触发条件按需检查;尚无后台调度程序
- 没有 facilitator、托管服务或 webhook 投递(接受
webhook_url,但不会调用),也没有 Postgres/Inngest - 人工试点 API 密钥是固定测试密钥,不会按用户单独发放
诚实规则(在代码中强制执行)
- 每项交付内容都包含
"sandbox": true - 声明验证:“supported” = 在引用的来源中找到逐字匹配的引文,不代表“该声明属实”。无法核验 → “unverified”
- 引用审计:报告真实的 HTTP 状态码 + 逐字匹配的文本
- 工作证明:仅检查证据是否已解析;绝不声称工作已得到验证
- QA 闸门:任何缺少 sandbox 标志或必需输出键的结果都会导致失败
文件
app.py— FastAPI 网关catalog.py— 5 项服务定义(架构、上限、插槽)services.py— 诚实的最简服务逻辑 + QA 闸门signing.py— Ed25519 密钥管理ledger.py— 仅追加的 JSONL 账本quotas.py— 稀缺配额、令牌预算、紧急停止开关harness.py— 合成买方测试框架static/— agent.json、llms.txt、robots.txt、test.html(面向用户的页面)data/— 密钥 + ledger.jsonl(运行时创建,按惯例由 git 忽略)
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。