Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 118 additions & 0 deletions skills/query-address-info/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
---
id: query-address-info
name: Query Address Info
description: Query on-chain wallet addresses for token balances and positions, including token metadata, price, 24h change, and holding quantity.
category: Blockchain

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P0 Invalid category value

The category field is set to Blockchain, which is not one of the allowed values. Per CONTRIBUTING.md, valid categories are strictly: productivity, development, communication, writing, research, other. The automated CI checks validate this field and will reject the PR with this value. other is the correct fallback for blockchain/crypto skills.

Suggested change
category: Blockchain
category: other

author: binance-web3-team
version: 1.0.0
requires: []
examples:
- Show all token holdings for this wallet on BSC: 0x0000000000000000000000000000000000000001.
- Get this address portfolio on Base with token prices and 24h percent change.
- Query Solana wallet assets and summarize biggest positions by value.
---

# Query Address Info Skill

## Overview

This skill queries any on-chain wallet address for token holdings, supporting:
- List of all tokens held by a wallet address
- Current price of each token
- 24-hour price change percentage
- Holding quantity
Comment on lines +15 to +23

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Skill contains only API docs — no agent behavioral instructions

Looking at the rest of the skill repository (e.g., skills/ab-test-setup/SKILL.md), skills are written as natural language instructions that tell the AI agent how to behave. This file is purely API reference documentation (endpoint, parameters, response shape) with no instructions on what the agent should actually do.

There is no guidance such as:

  • When should this skill activate?
  • How should results be presented to the user (table, prose, list)?
  • How should the agent handle pagination (when to fetch more pages, when to stop)?
  • What should the agent say when the address has no holdings or when the API returns an error?
  • How should the agent validate the wallet address format before calling the API?

Without behavioral instructions, an AI agent using this skill won't know how to respond meaningfully to a user request. Please add a natural language instructions section above the API documentation.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!


## API Endpoint

### Query Wallet Token Balance

**Method**: GET

**URL**:
`https://web3.binance.com/bapi/defi/v3/public/wallet-direct/buw/wallet/address/pnl/active-position-list`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P0 External URL referenced in skill instructions

The skill embeds a full external URL (https://web3.binance.com/...) directly in the instructions body. According to CONTRIBUTING.md, guideline #3 states: "Don't reference external URLs — Skills should be self-contained." This will also fail the automated PR checks.

The PR checklist item "No external URLs referenced in instructions" is incorrectly checked as complete. The URL, example curl command (line 51–55), and any other https:// references need to be replaced with instructional prose describing the endpoint path structure, so the agent can construct the request using knowledge already in the skill without reaching out to an external resource definition.


**Request Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| address | string | Yes | Wallet address, e.g., `0x0000000000000000000000000000000000000001` |
| chainId | string | Yes | Chain ID, e.g., `56` (BSC), `8453` (Base) |
| offset | number | No | Pagination offset, default 0 |
Comment on lines +38 to +40

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Missing limit parameter and pagination termination condition

The offset parameter is documented but there is no limit parameter listed, and the response schema contains no total or hasMore field to signal when to stop paginating. An agent asked to retrieve all holdings would have no way to determine when the last page has been reached.

Consider:

  1. Documenting any limit parameter if it exists.
  2. Adding a field to the response table (e.g., total, hasNextPage) that indicates the total count or whether more pages are available.
  3. Adding a note in the instructions on the recommended pagination strategy (e.g., "stop when list length is less than the page size").


**Request Headers**:
```text
clienttype: web
clientversion: 1.2.0
Accept-Encoding: identity
```

**Example Request**:
```bash
curl --location 'https://web3.binance.com/bapi/defi/v3/public/wallet-direct/buw/wallet/address/pnl/active-position-list?address=0x0000000000000000000000000000000000000001&chainId=56&offset=0' \
--header 'clienttype: web' \
--header 'clientversion: 1.2.0' \
--header 'Accept-Encoding: identity'
```

**Response Example**:
```json
{
"code": "000000",
"message": null,
"messageDetail": null,
"data": {
"offset": 0,
"addressStatus": null,
"list": [
{
"chainId": "56",
"address": "0x0000000000000000000000000000000000000001",
"contractAddress": "token contract address",
"name": "name of token",
"symbol": "symbol of token",
"icon": "/images/web3-data/public/token/logos/xxxx.png",
"decimals": 18,
"price": "0.0000045375251839978",
"percentChange24h": "6.84",
"remainQty": "20"
}
]
},
"success": true
}
```

**Response Fields**:

| Field | Type | Description |
|-------|------|-------------|
| chainId | string | Chain ID |
| address | string | Wallet address |
| contractAddress | string | Token contract address |
| name | string | Token name |
| symbol | string | Token symbol |
| icon | string | Token icon URL path |
| decimals | number | Token decimals |
| price | string | Current price (USD) |
| percentChange24h | string | 24-hour price change (%) |
| remainQty | string | Holding quantity |

## Supported Chains

| Chain Name | chainId |
|------------|---------|
| BSC | 56 |
| Base | 8453 |
| Solana | CT_501 |
Comment on lines +100 to +106

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Solana address format is undocumented and incompatible with the example request

The skill supports Solana (CT_501) but provides no guidance on its address format. Solana wallet addresses are base58-encoded public keys (e.g., 5YNmS1R9nNSCDzb5a7mMJ1dwK9uHeAAF4CmPEwKgVWr8), which are entirely different from the EVM 0x-prefixed hex addresses shown in all the examples. An agent following the examples would incorrectly format a Solana address query.

Please add a note clarifying the expected address format for Solana versus EVM chains, and provide a Solana-specific example request so agents can handle it correctly.


## Use Cases

1. **Query Wallet Assets**: When users want to view tokens held by a wallet address
2. **Track Holdings**: Monitor wallet token positions
3. **Portfolio Analysis**: Understand wallet asset allocation

## Notes

1. Icon URL requires full domain prefix: `bin.bnbstatic.com` + icon path
2. Price and quantity are string format; convert to numbers when using
3. Use offset parameter for pagination
Loading