From quicknode-pack
Fetches NFT metadata, token balances, and ERC-20 transfer history using QuickNode APIs and SDK. For Web3 apps building NFT/token features or checking wallet data.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin quicknode-packThis skill is limited to using the following tools:
Use QuickNode's NFT and Token APIs to fetch metadata, check balances, and track transfer history. These are QuickNode-specific add-on APIs beyond standard EVM RPC.
Queries Ethereum via QuickNode RPC with ethers.js: fetches block numbers, ETH balances, ERC-20 token balances, and transaction receipts for blockchain starters.
Generates TypeScript examples with Alchemy SDK to get ETH balance, fetch wallet NFTs, read ERC-20 token balances. For blockchain quickstarts, Alchemy setup testing.
Queries EVM blockchain data on Ethereum, Polygon, Arbitrum: transactions, address balances/tokens/history, blocks via Python CLI with Etherscan APIs.
Share bugs, ideas, or general feedback.
Use QuickNode's NFT and Token APIs to fetch metadata, check balances, and track transfer history. These are QuickNode-specific add-on APIs beyond standard EVM RPC.
quicknode-core-workflow-aimport { Core } from '@quicknode/sdk';
const core = new Core({ endpointUrl: process.env.QUICKNODE_ENDPOINT });
// Get all ERC-20 token balances for a wallet
const balances = await core.client.request({
method: 'qn_getWalletTokenBalance',
params: [{ wallet: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045' }],
});
for (const token of balances.result) {
console.log(`${token.name} (${token.symbol}): ${token.quantity}`);
}
const nfts = await core.client.request({
method: 'qn_fetchNFTs',
params: [{
wallet: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045',
contracts: ['0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D'], // BAYC
page: 1,
perPage: 10,
}],
});
for (const nft of nfts.result.assets) {
console.log(`${nft.name} — Token ID: ${nft.tokenId}`);
console.log(` Image: ${nft.imageUrl}`);
}
const transfers = await core.client.request({
method: 'qn_getWalletTokenTransactions',
params: [{
address: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045',
contract: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC
page: 1,
perPage: 10,
}],
});
for (const tx of transfers.result.transfers) {
console.log(`${tx.from} -> ${tx.to}: ${tx.value} at block ${tx.blockNumber}`);
}
import { ethers } from 'ethers';
const provider = new ethers.JsonRpcProvider(process.env.QUICKNODE_ENDPOINT);
const erc20Abi = ['function balanceOf(address) view returns (uint256)', 'function decimals() view returns (uint8)', 'function symbol() view returns (string)'];
const token = new ethers.Contract('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', erc20Abi, provider);
const [balance, decimals, symbol] = await Promise.all([
token.balanceOf('0xWalletAddress'),
token.decimals(),
token.symbol(),
]);
console.log(`${symbol} balance: ${ethers.formatUnits(balance, decimals)}`);
| Error | Cause | Solution |
|---|---|---|
Method not found: qn_* | Add-on not enabled | Enable in QuickNode Dashboard |
| Empty results | No tokens at address | Verify address is correct |
call revert on balanceOf | Wrong contract address | Verify ERC-20 contract |
Handle errors: quicknode-common-errors