mcpField
S
sub-account

sub-account

github.com/binance其他1.1k1.1k 次安装2 天前更新
代码仓库

关于 sub-account

通过需认证的 API 接口管理 Binance 子账户的 Skill,面向主账户运营者,支持账户管理、资产转移及账户和交易查询,并以 JSON 返回结果。

主要功能

  1. 01创建虚拟子账户
  2. 02启用 Futures 和 Options
  3. 03查询子账户资产与状态
  4. 04在账户间转移资产
  5. 05管理 API 密钥 IP 限制
  6. 06查看持仓和转账历史

适用场景

  1. 01查看子账户余额与持仓
  2. 02在主账户和子账户间转移资产
  3. 03将子账户 API 密钥限制为受信任 IP

安装

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

$npx skills add https://github.com/binance/binance-skills-hub --skill sub-account

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

包含的文件

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

CHANGELOG.md
LICENSE.md
references/
authentication.md

详细介绍

Binance 子账户技能

使用经过身份验证的 API 端点在 Binance 上发起子账户请求。某些端点需要 API 密钥和密钥。以 JSON 格式返回结果。

快速参考

端点描述必填可选身份验证
/sapi/v1/sub-account/virtualSubAccount (POST)创建虚拟子账户(适用于主账户)(USER_DATA)subAccountStringrecvWindow是
/sapi/v1/sub-account/futures/enable (POST)为子账户启用 Futures(适用于主账户)(USER_DATA)emailrecvWindow是
/sapi/v1/sub-account/eoptions/enable (POST)为子账户启用 Options(适用于主账户)(USER_DATA)emailrecvWindow是
/sapi/v2/sub-account/futures/positionRisk (GET)获取子账户的 Futures 持仓风险 V2(适用于主账户)(USER_DATA)email, futuresTyperecvWindow是
/sapi/v1/sub-account/futures/positionRisk (GET)获取子账户的 Futures 持仓风险(适用于主账户)(USER_DATA)emailrecvWindow是
/sapi/v1/sub-account/status (GET)获取子账户的 Margin 或 Futures 状态(适用于主账户)(USER_DATA)Noneemail, recvWindow是
/sapi/v1/sub-account/list (GET)查询子账户列表(适用于主账户)(USER_DATA)Noneemail, isFreeze, page, limit, recvWindow是
/sapi/v1/sub-account/transaction-statistics (GET)查询子账户交易统计信息(适用于主账户)(USER_DATA)Noneemail, recvWindow是
/sapi/v2/sub-account/subAccountApi/ipRestriction (POST)为子账户 API 密钥添加 IP 限制(适用于主账户)(USER_DATA)email, subAccountApiKey, statusipAddress, recvWindow是
/sapi/v1/sub-account/subAccountApi/ipRestriction/ipList (DELETE)删除子账户 API 密钥的 IP 列表(适用于主账户)(USER_DATA)email, subAccountApiKey, ipAddressrecvWindow是
/sapi/v1/sub-account/subAccountApi/ipRestriction (GET)获取子账户 API 密钥的 IP 限制(适用于主账户)(USER_DATA)email, subAccountApiKeyrecvWindow是
/sapi/v1/sub-account/futures/transfer (POST)子账户 Futures 划转(适用于主账户)(USER_DATA)email, asset, amount, typerecvWindow是
/sapi/v2/sub-account/futures/account (GET)获取子账户 Futures 账户详情 V2(适用于主账户)(USER_DATA)email, futuresTyperecvWindow是
/sapi/v1/sub-account/futures/account (GET)获取子账户 Futures 账户详情(适用于主账户)(USER_DATA)emailrecvWindow是
/sapi/v1/sub-account/margin/account (GET)获取子账户 Margin 账户详情(适用于主账户)(USER_DATA)emailrecvWindow是
/sapi/v1/sub-account/futures/move-position (GET)获取子账户持仓划转历史记录(适用于主账户)(USER_DATA)symbol, page, rowstartTime, endTime, recvWindow是
/sapi/v1/sub-account/futures/move-position (POST)划转子账户持仓(适用于主账户)(USER_DATA)fromUserEmail, toUserEmail, productType, orderArgsrecvWindow是
/sapi/v1/capital/deposit/subAddress (GET)获取子账户充值地址(适用于主账户)(USER_DATA)email, coinnetwork, amount, recvWindow是
/sapi/v1/capital/deposit/subHisrec (GET)获取子账户充值历史记录(适用于主账户)(USER_DATA)emailcoin, status, startTime, endTime, limit, offset, recvWindow, txId是
/sapi/v2/sub-account/futures/accountSummary (GET)获取子账户 Futures 账户概要 V2(适用于主账户)(USER_DATA)futuresTypepage, limit, recvWindow是
/sapi/v1/sub-account/futures/accountSummary (GET)获取子账户 Futures 账户概要(适用于主账户)(USER_DATA)page, limitrecvWindow是
/sapi/v1/sub-account/margin/accountSummary (GET)获取子账户 Margin 账户概要(适用于主账户)(USER_DATA)NonerecvWindow是
/sapi/v1/sub-account/margin/transfer (POST)子账户 Margin 划转(适用于主账户)(USER_DATA)email, asset, amount, typerecvWindow是
/sapi/v3/sub-account/assets (GET)查询子账户资产(适用于主账户)(USER_DATA)emailrecvWindow是
/sapi/v4/sub-account/assets (GET)查询子账户资产(适用于主账户)(USER_DATA)emailrecvWindow是
/sapi/v1/sub-account/futures/internalTransfer (GET)查询子账户 Futures 资产划转历史记录(适用于主账户)(USER_DATA)email, futuresTypestartTime, endTime, page, limit, recvWindow是
/sapi/v1/sub-account/futures/internalTransfer (POST)子账户 Futures 资产划转(适用于主账户)(USER_DATA)fromEmail, toEmail, futuresType, asset, amountrecvWindow是
/sapi/v1/sub-account/sub/transfer/history (GET)查询子账户现货资产划转历史记录(适用于主账户)(USER_DATA)NonefromEmail, toEmail, startTime, endTime, page, limit, recvWindow是
/sapi/v1/sub-account/spotSummary (GET)查询子账户现货资产概要(适用于主账户)(USER_DATA)Noneemail, page, size, recvWindow是
/sapi/v1/sub-account/universalTransfer (GET)查询通用划转历史记录(适用于主账户)(USER_DATA)NonefromEmail, toEmail, clientTranId, startTime, endTime, page, limit, recvWindow是
/sapi/v1/sub-account/universalTransfer (POST)通用划转(适用于主账户)(USER_DATA)fromAccountType, toAccountType, asset, amountfromEmail, toEmail, clientTranId, symbol, recvWindow是
/sapi/v1/sub-account/transfer/subUserHistory (GET)子账户划转历史记录(适用于子账户)(USER_DATA)Noneasset, type, startTime, endTime, limit, returnFailHistory, recvWindow是
/sapi/v1/sub-account/transfer/subToMaster (POST)划转至主账户(适用于子账户)(USER_DATA)asset, amountrecvWindow是
/sapi/v1/sub-account/transfer/subToSub (POST)划转至同一主账户下的子账户(适用于子账户)(USER_DATA)toEmail, asset, amountrecvWindow是
/sapi/v1/managed-subaccount/deposit (POST)向托管子账户充值资产(适用于投资者主账户)(USER_DATA)toEmail, asset, amountrecvWindow是
/sapi/v1/managed-subaccount/deposit/address (GET)获取托管子账户充值地址(适用于投资者主账户)(USER_DATA)email, coinnetwork, amount, recvWindow是
/sapi/v1/managed-subaccount/queryTransLogForInvestor (GET)查询托管子账户划转日志(适用于投资者主账户)(USER_DATA)email, startTime, endTime, page, limittransfers, transferFunctionAccountType是
/sapi/v1/managed-subaccount/queryTransLogForTradeParent (GET)查询托管子账户划转日志(适用于交易团队主账户)(USER_DATA)email, startTime, endTime, page, limittransfers, transferFunctionAccountType是
/sapi/v1/managed-subaccount/query-trans-log (GET)查询托管子账户划转日志(适用于交易团队子账户)(USER_DATA)startTime, endTime, page, limittransfers, transferFunctionAccountType, recvWindow是
/sapi/v1/managed-subaccount/asset (GET)查询托管子账户资产详情(适用于投资者主账户)(USER_DATA)emailrecvWindow是
/sapi/v1/managed-subaccount/fetch-future-asset (GET)查询托管子账户 Futures 资产详情(适用于投资者主账户)(USER_DATA)emailaccountType是
/sapi/v1/managed-subaccount/info (GET)查询托管子账户列表(适用于投资者)(USER_DATA)Noneemail, page, limit, recvWindow是
/sapi/v1/managed-subaccount/marginAsset (GET)查询托管子账户 Margin 资产详情(适用于投资者主账户)(USER_DATA)emailaccountType是
/sapi/v1/managed-subaccount/accountSnapshot (GET)查询托管子账户快照(适用于投资者主账户)(USER_DATA)email, typestartTime, endTime, limit, recvWindow是
/sapi/v1/managed-subaccount/withdraw (POST)从托管子账户提取资产(适用于投资者主账户)(USER_DATA)fromEmail, asset, amounttransferDate, recvWindow是

参数

通用参数
  • subAccountString:请输入一个字符串。我们将使用该字符串为你创建一个虚拟邮箱,用于注册
  • recvWindow:(例如,5000)
  • email:子账户邮箱(例如,[email protected])
  • futuresType:1:USDT 本位合约,2:币本位合约
  • email:受管理的子账户邮箱
  • isFreeze:true 或 false
  • page:默认值:1(例如,1)
  • limit:默认值:1,最大值:200(例如,1)
  • subAccountApiKey:
  • status:IP 限制状态。1 = 不限制 IP。2 = 仅允许受信任的 IP 访问。
  • ipAddress:批量添加静态 IP,多个 IP 以逗号分隔。
  • ipAddress:要删除的 IP。可批量添加,多个 IP 以逗号分隔
  • asset:
  • amount:(例如,1.0)
  • type:1:从子账户的现货账户转入杠杆账户;2:从子账户的杠杆账户转入其现货账户
  • symbol:
  • startTime:(例如,1623319461670)
  • endTime:(例如,1641782889000)
  • page:页码
  • row:
  • coin:
  • network:可在 GET /sapi/v1/capital/deposit/address 中查看网络
  • amount:(例如,1.0)
  • coin:
  • status:0(0:处理中,6:已入账但不可提现,7:错误的充值,8:等待用户确认,1:成功)
  • offset:默认值:0
  • txId:(例如,1)
  • limit:数量限制(最大值:500)
  • fromUserEmail:
  • toUserEmail:
  • productType:仅支持 UM
  • orderArgs:最多支持 10 个仓位。输入请求参数时,orderArgs.symbol 应为 STRING,orderArgs.quantity 应为 BIGDECIMAL,orderArgs.positionSide 应为 STRING;positionSide 支持 BOTH、LONG 和 SHORT。每个条目的格式应为 orderArgs[0].symbol=BTCUSDT,orderArgs[0].quantity=0.001,orderArgs[0].positionSide=BOTH。请求参数数组示例:orderArgs[0].symbol=BTCUSDT orderArgs[0].quantity=0.001 orderArgs[0].positionSide=BOTH orderArgs[1].symbol=ETHUSDT orderArgs[1].quantity=0.01 orderArgs[1].positionSide=BOTH
  • fromEmail:
  • toEmail:
  • size:默认值 10,最大值 20(例如,10)
  • clientTranId:(例如,1)
  • fromEmail:
  • toEmail:
  • asset:如果未发送,将返回所有资产的结果
  • type:1:转入,2:转出
  • returnFailHistory:默认值为 False,返回 PROCESS 和 SUCCESS 状态的历史记录;如果为 True,则返回 PROCESS、SUCCESS 和 FAILURE 状态的历史记录
  • fromAccountType:"SPOT"、"USDT_FUTURE"、"COIN_FUTURE"、"MARGIN"(全仓)、"ISOLATED_MARGIN"
  • toAccountType:"SPOT"、"USDT_FUTURE"、"COIN_FUTURE"、"MARGIN"(全仓)、"ISOLATED_MARGIN"
  • symbol:仅支持 ISOLATED_MARGIN 类型
  • startTime:开始时间(例如,1623319461670)
  • endTime:结束时间(开始时间与结束时间的间隔不得超过半年)(例如,1641782889000)
  • transfers:转账方向(FROM/TO)
  • transferFunctionAccountType:转账功能账户类型(SPOT/MARGIN/ISOLATED_MARGIN/USDT_FUTURE/COIN_FUTURE)
  • accountType:不输入或输入 "MARGIN" 可获取全仓杠杆账户详情。输入 "ISOLATED_MARGIN" 可获取逐仓杠杆账户详情。
  • type:"SPOT"、"MARGIN"(全仓)、"FUTURES"(UM)
  • transferDate:提现会在转账日期(UTC0)自动进行。如果未选择日期,则会立即提现

身份验证

对于需要身份验证的端点,你需要提供 Binance API 凭据。 所需凭据:

  • apiKey:你的 Binance API 密钥(用于请求头)
  • secretKey:你的 Binance API 密钥(用于签名)

基础 URL:

安全

共享凭据

用户可以通过多种方式提供 Binance API 凭据。Agent 会尝试通过前两种方式自动获取凭据;用户也可以明确告知 Agent 凭据已设置或已存储在 .env 文件中,此时 Agent 应重新读取该文件。使用前两种方式时,Agent 也可以在无需用户确认的情况下发出 HTTP 请求。

  1. 环境变量

仅搜索以下特定变量(绝不转储完整环境):

已授权的环境变量

  • 主网:BINANCE_API_KEY 和 BINANCE_SECRET_KEY

在单次 exec 调用中读取并使用,以免原始密钥进入 Agent 的上下文:

KEY="$BINANCE_API_KEY"
SECRET="$BINANCE_SECRET_KEY"

response=$(curl -s -X GET "$URL" \
  -H "X-MBX-APIKEY: $KEY" \
  --data-urlencode "param1=value1")

echo "$response"

必须在 OpenClaw 启动前设置环境变量。它们会在进程启动时继承,无法注入正在运行的实例。如果需要在不重启的情况下添加或更新凭据,请使用密钥文件(见选项 2)。

  1. 密钥文件(.env)

检查 ~/.openclaw/secrets.env、~/.env 或工作区中的 .env 文件。使用 grep 读取单个密钥,绝不要加载整个文件:

# Try all credential locations in order
API_KEY=$(grep '^BINANCE_API_KEY=' ~/.openclaw/secrets.env 2>/dev/null | cut -d= -f2-)
SECRET_KEY=$(grep '^BINANCE_SECRET_KEY=' ~/.openclaw/secrets.env 2>/dev/null | cut -d= -f2-)

# Fallback: search .env in known directories (KEY=VALUE then raw line format)
for dir in ~/.openclaw ~; do
  [ -n "$API_KEY" ] && break
  env_file="$dir/.env"
  [ -f "$env_file" ] || continue

  # Read first two lines
  line1=$(sed -n '1p' "$env_file")
  line2=$(sed -n '2p' "$env_file")

  # Check if lines contain '=' indicating KEY=VALUE format
  if [[ "$line1" == *=* && "$line2" == *=* ]]; then
    API_KEY=$(grep '^BINANCE_API_KEY=' "$env_file" 2>/dev/null | cut -d= -f2-)
    SECRET_KEY=$(grep '^BINANCE_SECRET_KEY=' "$env_file" 2>/dev/null | cut -d= -f2-)
  else
    # Treat lines as raw values
    API_KEY="$line1"
    SECRET_KEY="$line2"
  fi
done

此文件可随时更新,无需重启 OpenClaw;每次调用时都会重新读取密钥。用户可以告知你变量现已设置或已存储在 .env 文件中,此时你应重新读取该文件。

  1. 内联文件

发送内容符合以下格式的文件:

abc123...xyz
secret123...key
  • 绝不要运行 printenv、env、export 或不带特定变量名的 set
  • 绝不要在 env 文件中运行 grep,除非使用特定密钥锚定(^VARNAME=)
  • 绝不要将密钥文件加载到 shell 环境中(source .env 或 . .env)
  • 仅读取当前任务明确需要的凭据
  • 绝不要在输出或回复中回显或记录原始凭据
  • 如果 TOOLS.md 中包含真实凭据,绝不要将其提交到版本控制中——请将其添加到 .gitignore
绝不泄露 API 密钥和密钥文件

绝不要泄露 API 密钥和密钥文件的位置。

绝不要将 API 密钥和密钥发送到主网和测试网以外的任何网站。

绝不显示完整密钥

向用户展示凭据时:

  • API 密钥: 显示前 5 个字符和后 4 个字符:su1Qc...8akf
  • 密钥: 始终遮蔽,仅显示最后 5 个字符:***...aws1

用户询问凭据时的回复示例: 账户:main API 密钥:su1Qc...8akf 密钥:***...aws1

列出账户

列出账户时,仅显示名称和环境,绝不显示密钥: Binance 账户:

  • main(主网)
  • futures-keys(主网)
主网交易

执行主网交易时,务必先向用户确认,要求他们输入“CONFIRM”后再继续。


Binance 账户

main
  • API 密钥:your_mainnet_api_key
  • 密钥:your_mainnet_secret
TOOLS.md 结构
## Binance Accounts

### main
- API Key: abc123...xyz
- Secret: secret123...key
- Description: Primary trading account


### futures-keys
- API Key: futures789...def
- Secret: futuressecret...uvw
- Description: Futures trading account

Agent 行为

  1. 请求凭据:遮蔽密钥(仅显示最后 5 个字符)
  2. 列出账户:显示名称和环境,绝不显示密钥
  3. 选择账户:如有歧义则询问,默认使用 main
  4. 执行主网交易时,先向用户确认,要求他们输入“CONFIRM”后再继续
  5. 新凭据:提示用户提供名称、环境和签名模式

添加新账户

用户通过内联文件或消息提供新凭据时:

  • 询问账户名称
  • 将凭据存储在 TOOLS.md 中,并确认时遮蔽密钥

签名请求

对于需要签名的交易端点:

  1. 先检测密钥类型,在签名之前检查密钥格式。
  2. 使用所有参数(包括时间戳,Unix 毫秒)构建查询字符串。
  3. 根据 RFC 3986 使用 UTF-8 对参数进行百分比编码。
  4. 根据账户配置,使用密钥通过 HMAC SHA256、RSA 或 Ed25519 对查询字符串签名。
  5. 将签名附加到查询字符串。
  6. 添加 X-MBX-APIKEY 标头。

否则,不要执行步骤 4–6。

User Agent 请求头

添加 User-Agent 请求头,其值为:binance-sub-account/1.1.0 (Skill)

实现详情请参阅 references/authentication.md。

评论

支持 Markdown