mcpField
Z
zscore

zscore

github.com/zerufinanceAgent 工作流043 次安装34 周前更新
代码仓库

关于 zscore

zscore 是用于在 zScore Identity Registry 注册和管理 AI Agent 的技能,面向需要发布 ERC-8004 身份信息的用户。它通过交互式必填信息和双重确认门槛,约束 JSON 文件创建与链上操作。

主要功能

  1. 01注册并铸造 Agent 身份 NFT
  2. 02读取链上 Agent 信息
  3. 03查询注册费用和开放状态
  4. 04设置自定义元数据
  5. 05清除 Agent 钱包

适用场景

  1. 01在 Base Mainnet 注册 Agent
  2. 02在 Base Sepolia 测试网注册 Agent
  3. 03查询 Agent 所有者与服务信息
  4. 04更新自有 Agent 的元数据或钱包

MCP 相关

可在注册服务中填写 MCP 服务端点及其工具、提示词和资源信息。该技能本身用于注册和管理身份记录。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/zerufinance/zscore --skill zscore

安装后在 Claude Code 中输入/zscore确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitignore
README.md
package.json
lib/
abi.js
agent-wallet.js
config.js
create-agent-uri.js
errors.js
get-agent.js
index.js
metadata.js
register-agent.js
schema.js
scripts/
zscore.ts

详细介绍

zScore ERC-8004 身份注册表

在 zScore 身份注册表中注册和管理 AI Agent。默认使用 Base 主网(费用为 0.0025 ETH)。使用 --chain 84532 可切换到 Base Sepolia 测试网。

安装此技能

从官方仓库安装此技能的最新版本:

npx skills add zerufinance/zscore -y

此命令安装的技能与在技能生态系统(例如 skills.sh)中发布的版本相同。技能更新后,请使用此命令获取更新。

一次性设置

安装此技能后,请运行一次以安装依赖项(在技能目录中,例如 .cursor/skills/zscore/ 或 ~/.cursor/skills/zscore/):

npm install

不可妥协的规则:没有用户输入,就不得推进

此技能必须严格采用交互方式。

  • 除非用户已提供所有必需输入(或在允许的情况下明确跳过),否则不得创建任何 JSON 文件。
  • 不得假设或编造任何值(名称、描述、URL、版本、工具列表、技能、域名、信任模型等)。
  • 除非用户明确同意你计划采用的每一项默认值,否则不得“使用默认值”继续。
  • 不得重复使用先前聊天、记忆或之前运行中的数据,除非用户再次明确提供这些数据(例如粘贴之前的 JSON 或确认具体值)。
  • 如果缺少任何必需值,必须询问用户并停止。不得生成部分 JSON、写入文件或运行命令。

这是核心安全/质量门槛:缺少输入就必须阻止工作流继续。

Agent 指令:注册流程(严格门控)

当用户想要注册 Agent时,必须遵循以下门控流程。工作流分为三个阶段:

  1. 收集输入(询问,然后等待)。
  2. 验证并总结(说明你将执行的操作)。
  3. 仅在获得明确批准后继续(创建文件,然后运行注册)。
阶段 1 — 收集输入(询问,然后停止)

必须向用户询问以下输入。在每一项都得到解决之前,不得进入阶段 2。

必需输入(必须提供)
输入是否必需?门控行为
名称是询问:“Agent 的名称是什么?”(1–256 个字符)。如果用户未提供,则停止。
描述是询问:“Agent 应使用什么描述?”(最多 2048 个字符)。如果用户未提供,则停止。
服务是询问:“你想发布哪些服务类型?”然后收集至少一项服务的完整详情。如果用户未提供,则停止。
可选输入(必须明确提供或明确跳过)

对于每个可选字段,都必须询问用户是否要设置。只有用户明确表示跳过(或表达相同意思)时,才将其视为已省略。

输入必填?需要询问的内容
Image否“你要包含图片 URL(头像/Logo)吗?如果要,请粘贴。如果不要,请说‘跳过’。”
x402Support否“该 Agent 支持 x402 支付吗?(true/false)或者说‘跳过’。”
active否“应将该 Agent 标记为活跃吗?(true/false)或者说‘跳过’。”
supportedTrust否“应列出哪些信任模型?(例如 reputation、ERC-8004、crypto-economic、tee-attestation)或者说‘跳过’。”

Owner: 不要询问用户提供 owner 地址。Owner 始终从签名者(持有 PRIVATE_KEY 的钱包)派生。脚本会自动设置;API 要求文档 owner 与签名者一致,以便同一个钱包在铸造后更新文档。

私钥/资金门槛(运行注册前必须满足)
  • 注册费用: Base Mainnet(默认):0.0025 ETH。Base Sepolia:0.001 ETH。

  • 钱包还必须有足够的 ETH 支付 Gas 费(建议主网上总计约 0.003 ETH)。

  • 私钥: 注册需要一个钱包。请用户确认以下其中一项:

    • “PRIVATE_KEY 已在环境变量/OpenClaw 配置中设置”,或者
    • “我会在本次运行中提供 PRIVATE_KEY”。
  • 切勿将私钥写入任何文件。切勿复述私钥。

如果用户未确认如何提供 PRIVATE_KEY,必须停止。

阶段 2 — 验证并汇总(暂不创建文件)

提供所有必填输入(并且可选输入已提供或明确跳过)后:

  1. 在内存中按完整结构构造 JSON 对象(参见下文“Agent JSON 结构”)。

  2. 验证:

    • name 已提供且长度为 1–256 个字符
    • description 已提供且不超过 2048 个字符
    • services 至少有 1 项
    • 每项 service 均符合其类型对应的结构
  3. 简要汇总将要写入的内容(名称、描述长度、services 列表、链的选择、费用)。

  4. 询问用户是否明确批准,并要求其作出肯定答复: “是否批准按这些确切内容写入 agent.json?(yes/no)” 如果用户没有回答 yes,则停止。

阶段 3 — 创建文件并运行注册(仅在获批后)

仅在用户明确批准后:

  1. 将 JSON 写入文件(例如 agent.json)。

  2. 询问用户是否最终明确同意继续: “现在是否继续进行链上注册?(yes/no)” 如果回答不是 yes,则停止。

  3. 运行注册:

    • Base Mainnet(默认): npx tsx ./scripts/zscore.ts register --json agent.json
    • Base Sepolia: npx tsx ./scripts/zscore.ts register --json agent.json --chain 84532

在满足所有门槛要求并且用户已批准以下两项之前,不要运行 register 命令:

  • 写入 JSON 文件;以及
  • 执行链上注册。

Agent JSON 结构(ERC-8004 registration-v1)

注册只接受 JSON 文件。收集用户输入并构建文件时,使用以下完整结构。不要默认使用最小结构。

完整 JSON(MCP + A2A + OASF + web + x402):

{
  "name": "DataAnalyst Pro",
  "description": "Enterprise-grade blockchain data analysis agent. Performs on-chain forensics, wallet profiling, and transaction pattern detection.",
  "image": "https://cdn.example.com/agents/analyst.png",
  "services": [
    {
      "name": "MCP",
      "endpoint": "https://api.dataanalyst.ai/mcp",
      "version": "2025-06-18",
      "mcpTools": ["analyze_wallet", "trace_transactions", "detect_anomalies"],
      "capabilities": []
    },
    {
      "name": "A2A",
      "endpoint": "https://api.dataanalyst.ai/.well-known/agent-card.json",
      "version": "0.3.0",
      "a2aSkills": ["analytical_skills/data_analysis/blockchain_analysis"]
    },
    {
      "name": "OASF",
      "endpoint": "https://github.com/agntcy/oasf/",
      "version": "0.8.0",
      "skills": ["analytical_skills/data_analysis/blockchain_analysis"],
      "domains": ["technology/blockchain"]
    },
    {
      "name": "web",
      "endpoint": "https://dataanalyst.ai"
    }
  ],
  "x402Support": true,
  "active": true,
  "supportedTrust": ["reputation", "ERC-8004"]
}

所有字段:

字段类型必填默认值说明
namestring是—Agent 名称(1–256 个字符)
descriptionstring是—Agent 的功能(最多 2048 个字符)
imagestring否未提供时省略头像 URL(HTTPS、IPFS 或 Arweave)
servicesarray是—服务端点(1–64 项,见下文)
x402Supportboolean否未提供时省略是否支持 x402 支付协议
activeboolean否未提供时省略Agent 是否正在接受请求
supportedTruststring[]否未提供时省略信任模型:"reputation"、"crypto-economic"、"tee-attestation"、"ERC-8004"
ownerstring否签名者地址始终设置为签名者地址(PRIVATE_KEY)。不要询问用户;脚本会设置此字段,以便 API 在铸造后允许更新。

服务类型:

nameendpoint其他字段
"web"网站 URL—
"MCP"MCP 服务 URLversion、mcpTools[]、mcpPrompts[]、mcpResources[]、capabilities[]
"A2A"Agent 卡片 URL(/.well-known/agent-card.json)version、a2aSkills[]
"OASF"OASF 仓库 URLversion、skills[]、domains[]
自定义任意 URLdescription

命令

/zscore register --json <file>

只能通过 JSON 文件注册新 Agent。不支持基于标志的注册(不支持 --name / --description / --endpoint)。创建托管 Agent URI,在链上铸造 NFT,并使用实际的 agentId 更新 URI。

/zscore register --json agent.json
/zscore register --json agent.json --chain 84532

必需的门控步骤(必须按顺序执行):

  1. 收集必需输入:name、description、至少一个包含完整类型专属字段的服务,并确认如何提供 PRIVATE_KEY。
  2. 收集每个可选字段的输入,或明确决定“跳过”。
  3. 验证并总结将要写入的确切 JSON。
  4. 明确询问用户是否批准写入 agent.json(是/否)。
  5. 写入 agent.json。
  6. 明确询问用户是否批准在链上注册(是/否)。
  7. 运行注册命令。

SDK 会自动添加 type、registrations(其中包含 agentId: 0 占位符),并为缺失的可选字段设置默认值。铸造后,它会使用实际的 agentId 更新文档。

/zscore read <agentId>

读取 Agent 的链上数据:所有者、URI、钱包、名称、服务。

/zscore read 16

运行命令:npx tsx ./scripts/zscore.ts read 16

/zscore fee

检查当前注册费用以及是否开放注册。

/zscore fee

运行命令:npx tsx ./scripts/zscore.ts fee

/zscore set-metadata <agentId> --key <key> --value <value>

为 Agent 设置自定义元数据。仅所有者可调用。

/zscore set-metadata 16 --key "category" --value "trading"

需要 PRIVATE_KEY。

运行命令:npx tsx ./scripts/zscore.ts set-metadata 16 --key "category" --value "trading"

/zscore unset-wallet <agentId>

清除 Agent 钱包。仅所有者可调用。

/zscore unset-wallet 16

需要 PRIVATE_KEY。

运行命令:npx tsx ./scripts/zscore.ts unset-wallet 16

设置

只读(无需设置)

无需私钥即可使用 read 和 fee。

使用钱包(用于注册和写入)

添加到 OpenClaw 配置(~/.openclaw/openclaw.json):

{
  "skills": {
    "entries": {
      "zscore": {
        "enabled": true,
        "env": {
          "PRIVATE_KEY": "0xYourFundedPrivateKey"
        }
      }
    }
  }
}

可选环境变量:

  • RPC_URL — 覆盖默认 RPC
  • CHAIN_ID — 覆盖链(默认值:Base 主网为 8453,Base Sepolia 使用 84532)

合约信息

Base 主网(默认,chainId 8453)
  • 身份注册表: 0xFfE9395fa761e52DBC077a2e7Fd84f77e8abCc41
  • 信誉注册表: 0x187d72a58b3BF4De6432958fc36CE569Fb15C237
  • 注册费用: 0.0025 ETH
  • RPC: https://mainnet.base.org
Base Sepolia(测试网,chainId 84532)
  • 身份注册表: 0xF0682549516A4BA09803cCa55140AfBC4e5ed2E0

  • 信誉注册表: 0xaAC7557475023AEB581ECc8bD6886d1742382421

  • 注册费用: 0.001 ETH

  • RPC: https://sepolia.base.org

  • 来源: zscore

工作原理

  1. register 通过 Agent URI API 创建托管的 JSON 文档(ERC-8004 registration-v1 架构),在身份注册表上铸造 NFT(支付费用),然后使用真实的 agentId 更新文档。
  2. read 查询链上合约以获取所有者、tokenURI 和 agentWallet,然后获取并解析 URI JSON。
  3. fee 从合约读取当前的 registrationFee() 和 registrationEnabled()。
  4. set-metadata 在合约上调用 setMetadata(agentId, key, value)。
  5. unset-wallet 在合约上调用 unsetAgentWallet(agentId)。

评论

支持 Markdown