Learn-skills.dev query
Stacks network and blockchain query operations — get STX fees, account info, transaction history, block info, mempool transactions, contract info and events, network status, and call read-only contract functions. All queries use the Hiro API.
git clone https://github.com/NeverSight/learn-skills.dev
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/aibtcdev/skills/query" ~/.claude/skills/neversight-learn-skills-dev-query && rm -rf "$T"
data/skills-md/aibtcdev/skills/query/SKILL.mdQuery Skill
Provides Stacks network and blockchain query operations using the Hiro API. No wallet required for most queries;
get-account-info and get-account-transactions fall back to the active wallet address if no address is provided.
Usage
bun run query/query.ts <subcommand> [options]
Subcommands
get-stx-fees
Get current STX fee estimates for different priority levels.
bun run query/query.ts get-stx-fees
Output:
{ "network": "mainnet", "fees": { "low": { "microStx": 1000, "stx": "0.001 STX", "description": "Lower fee, may take longer to confirm" }, "medium": { "microStx": 2500, "stx": "0.0025 STX", "description": "Standard fee, typical confirmation time" }, "high": { "microStx": 5000, "stx": "0.005 STX", "description": "Higher fee, faster confirmation" } }, "byTransactionType": { "tokenTransfer": { "low": 1000, "medium": 2500, "high": 5000 }, "contractCall": { "low": 1500, "medium": 3000, "high": 6000 }, "smartContract": { "low": 2000, "medium": 4000, "high": 8000 } }, "unit": "micro-STX", "note": "1 STX = 1,000,000 micro-STX. Fees are estimates based on current mempool conditions." }
get-account-info
Get account information including nonce and STX balance.
bun run query/query.ts get-account-info [--address <stxAddress>]
Options:
(optional) — Stacks address to check (uses active wallet if omitted)--address
Output:
{ "address": "SP...", "network": "mainnet", "nonce": 42, "balance": { "microStx": "1000000000", "stx": "1000 STX" }, "explorerUrl": "https://explorer.hiro.so/address/SP...?chain=mainnet" }
get-account-transactions
Get transaction history for a Stacks account.
bun run query/query.ts get-account-transactions [--address <stxAddress>] [--limit 20] [--offset 0]
Options:
(optional) — Stacks address (uses active wallet if omitted)--address
(optional) — Maximum results (default: 20)--limit
(optional) — Pagination offset (default: 0)--offset
Output:
{ "address": "SP...", "network": "mainnet", "total": 150, "limit": 20, "offset": 0, "transactions": [ { "txId": "0x...", "type": "token_transfer", "status": "success", "sender": "SP...", "blockHeight": 145000, "fee": "1000", "explorerUrl": "https://explorer.hiro.so/txid/0x...?chain=mainnet" } ], "explorerUrl": "https://explorer.hiro.so/address/SP...?chain=mainnet" }
get-block-info
Get information about a specific Stacks block.
bun run query/query.ts get-block-info --height-or-hash <value>
Options:
(required) — Block height (integer) or block hash (0x-prefixed)--height-or-hash
Output:
{ "network": "mainnet", "hash": "0x...", "height": 145000, "canonical": true, "burnBlockHeight": 840000, "burnBlockTime": 1700000000, "burnBlockTimeIso": "2024-01-01T00:00:00.000Z", "txCount": 12, "txIds": ["0x..."] }
get-mempool-info
Get pending transactions in the Stacks mempool.
bun run query/query.ts get-mempool-info [--sender-address <addr>] [--limit 20] [--offset 0]
Options:
(optional) — Filter by sender address--sender-address
(optional) — Maximum results (default: 20)--limit
(optional) — Pagination offset (default: 0)--offset
Output:
{ "network": "mainnet", "total": 5, "limit": 20, "offset": 0, "transactions": [ { "txId": "0x...", "type": "contract_call", "sender": "SP...", "fee": "2500", "nonce": 43, "receiptTime": "2024-01-01T00:00:00.000Z", "explorerUrl": "https://explorer.hiro.so/txid/0x...?chain=mainnet" } ] }
get-contract-info
Get information about a smart contract including its ABI.
bun run query/query.ts get-contract-info --contract-id <address.contract-name>
Options:
(required) — Contract ID in format--contract-idaddress.contract-name
Output:
{ "contractId": "SP...contract-name", "network": "mainnet", "txId": "0x...", "blockHeight": 140000, "functions": [ { "name": "transfer", "access": "public", "args": [...], "outputs": {...} } ], "variables": [...], "maps": [...], "fungibleTokens": [...], "nonFungibleTokens": [...], "explorerUrl": "https://explorer.hiro.so/txid/SP...contract-name?chain=mainnet" }
get-contract-events
Get events emitted by a smart contract.
bun run query/query.ts get-contract-events --contract-id <address.contract-name> [--limit 20] [--offset 0]
Options:
(required) — Contract ID in format--contract-idaddress.contract-name
(optional) — Maximum results (default: 20)--limit
(optional) — Pagination offset (default: 0)--offset
Output:
{ "contractId": "SP...contract-name", "network": "mainnet", "limit": 20, "offset": 0, "events": [...], "explorerUrl": "https://explorer.hiro.so/txid/SP...contract-name?chain=mainnet" }
get-network-status
Get the current status of the Stacks network.
bun run query/query.ts get-network-status
Output:
{ "network": "mainnet", "serverVersion": "stacks-node 2.4.0.0.0", "status": "ready", "chainTip": { "block_height": 145000, "block_hash": "0x..." }, "coreInfo": { "peerVersion": 4026533888, "stacksTipHeight": 145000, "burnBlockHeight": 840000, "networkId": 1 } }
call-read-only
Call a read-only function on a smart contract.
bun run query/query.ts call-read-only --contract-id <id> --function-name <name> [--args <json>] [--sender <address>]
Options:
(required) — Contract ID in format--contract-idaddress.contract-name
(required) — Name of the read-only function--function-name
(optional) — JSON array of hex-encoded Clarity values (default:--args
)[]
(optional) — Sender address (uses active wallet or contract address if omitted)--sender
The
--args option accepts a JSON array of hex-encoded Clarity values. Use @stacks/transactions to encode values. For example, uintCV(1) serialized as hex would be "0100000000000000000000000000000001".
Output:
{ "contractId": "SP...contract-name", "functionName": "get-balance", "network": "mainnet", "okay": true, "result": "0x0100000000000000000000000000000064", "cause": null }
Notes
- All queries use the Hiro API (
orapi.mainnet.hiro.so
)api.testnet.hiro.so - Network is controlled by the
environment variable (default: testnet)NETWORK
andget-account-info
fall back to the active wallet addressget-account-transactions
falls back to the contract's own address as sender if no wallet is activecall-read-only