mcpField
N
nft

nft

github.com/aibtcdev其他11151 次安装1 天前更新
代码仓库

关于 nft

nft 是用于 Stacks L2 上 SIP-009 NFT 查询与转移的命令行技能。它可查看持有量、元数据、所有者、集合信息和转移历史;查询无需钱包,转移需解锁钱包。

主要功能

  1. 01按地址或集合筛选 NFT 持有量
  2. 02查询 NFT 的 SIP-016 元数据
  3. 03查看 NFT 当前所有者
  4. 04获取集合信息及合约函数
  5. 05分页查看集合转移历史
  6. 06向指定地址转移 NFT

适用场景

  1. 01盘点地址持有的 NFT
  2. 02核对 NFT 元数据和当前所有者
  3. 03查看集合供应量及可用函数
  4. 04追踪集合的转移记录或发送 NFT

安装

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

$npx skills add https://github.com/aibtcdev/skills --skill nft

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

附带文件AGENT.mdnft.ts

详细介绍

NFT 技能

在 Stacks L2 上提供 SIP-009 NFT(非同质化代币)操作。转账操作需要已解锁的钱包(请先运行 bun run wallet/wallet.ts unlock)。查询操作无需钱包。

用法

bun run nft/nft.ts <subcommand> [options]

子命令

get-holdings

列出某个地址拥有的所有 NFT。

bun run nft/nft.ts get-holdings [--address <addr>] [--contract-id <id>] [--limit <n>] [--offset <n>]

选项:

  • --address(可选)— 要查询的 Stacks 地址(若省略,则使用当前活动钱包)
  • --contract-id(可选)— 按指定的 NFT 集合合约 ID 筛选
  • --limit(可选)— 结果数量上限(默认值:20)
  • --offset(可选)— 分页偏移量(默认值:0)

输出:

{
  "address": "SP2...",
  "network": "mainnet",
  "total": 5,
  "nfts": [
    { "collection": "SP2....nft-contract::my-nft", "tokenId": "u1" },
    { "collection": "SP2....nft-contract::my-nft", "tokenId": "u2" }
  ]
}
get-metadata

获取特定 NFT 的元数据(SIP-016)。

bun run nft/nft.ts get-metadata --contract-id <id> --token-id <n>

选项:

  • --contract-id(必填)— NFT 集合合约 ID(例如,SP2....my-nft)
  • --token-id(必填)— NFT 的代币 ID(整数)

输出:

{
  "contractId": "SP2....my-nft",
  "tokenId": 1,
  "network": "mainnet",
  "metadata": {
    "name": "My NFT #1",
    "description": "...",
    "image": "https://..."
  }
}
transfer

将 NFT(SIP-009)转给接收方地址。需要已解锁的钱包。

bun run nft/nft.ts transfer --contract-id <id> --token-id <n> --recipient <addr> [--fee low|medium|high|<microStx>]

选项:

  • --contract-id(必填)— NFT 集合合约 ID
  • --token-id(必填)— 要转移的 NFT 的代币 ID(整数)
  • --recipient(必填)— 接收方的 Stacks 地址
  • --fee(可选)— 费用预设(low|medium|high)或 micro-STX 金额;若省略,则自动估算

输出:

{
  "success": true,
  "txid": "abc123...",
  "from": "SP2...",
  "recipient": "SP3...",
  "contractId": "SP2....my-nft",
  "tokenId": 1,
  "network": "mainnet",
  "explorerUrl": "https://explorer.hiro.so/txid/abc123...?chain=mainnet"
}
get-owner

获取特定 NFT 的当前所有者。

bun run nft/nft.ts get-owner --contract-id <id> --token-id <n>

选项:

  • --contract-id(必填)— NFT 集合合约 ID
  • --token-id(必填)— NFT 的代币 ID(整数)

输出:

{
  "contractId": "SP2....my-nft",
  "tokenId": 1,
  "network": "mainnet",
  "owner": "SP2..."
}
get-collection-info

获取 NFT 集合的信息,包括名称、总供应量和可用函数。

bun run nft/nft.ts get-collection-info --contract-id <id>

选项:

  • --contract-id(必填)— NFT 集合合约 ID

输出:

{
  "network": "mainnet",
  "contractId": "SP2....my-nft",
  "name": "my-nft",
  "totalSupply": 10000,
  "functions": ["transfer", "get-owner", "get-last-token-id", "get-token-uri"]
}
get-history

获取某个集合中 NFT 的转账历史记录。

bun run nft/nft.ts get-history --contract-id <id> [--limit <n>] [--offset <n>]

选项:

  • --contract-id(必填)— NFT 集合合约 ID
  • --limit(可选)— 结果数量上限(默认值:20)
  • --offset(可选)— 分页偏移量(默认值:0)

输出:

{
  "contractId": "SP2....my-nft",
  "network": "mainnet",
  "total": 150,
  "events": [
    {
      "sender": "SP2...",
      "recipient": "SP3...",
      "tokenId": "u1",
      "txId": "abc123...",
      "blockHeight": 150000
    }
  ]
}

备注

  • 查询操作(get-holdings、get-metadata、get-owner、get-collection-info、get-history)使用公开的 Hiro API
  • 转账操作需要已解锁的钱包
  • NFT 代币 ID 通常为从 1 开始的正整数
  • 集合合约 ID 的格式为:SP<deployer-address>.<contract-name>

评论

支持 Markdown