skills/quicknode-skill/SKILL.md
Quicknode blockchain infrastructure: endpoint access for 80+ chains over RPC/WebSocket/gRPC/REST, Streams, Webhooks, SQL Explorer, IPFS, Solana DAS API, Yellowstone and Hypercore gRPC, Key-Value Store, Admin API, x402 and MPP pay-per-request RPC, and Agent Subscriptions. Use for any Quicknode product, qn_ methods, blockchain data access on Ethereum, Solana, Hyperliquid and other supported chains, or wallet-paid agent access (x402, MPP, agent subscription).
npx skillsauth add quiknode-labs/blockchain-skills quicknode-skillInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
QUICKNODE_RPC_URL, optional QUICKNODE_WSS_URL / QUICKNODE_API_KEY)?| Product | Description | Use Case |
|---------|-------------|----------|
| RPC Endpoints | High-performance blockchain access | dApp backend, wallet interactions |
| Streams | Real-time & historical blockchain data pipelines | Event monitoring, analytics, indexing |
| Webhooks | Event-driven notifications | Alerts, transaction monitoring |
| IPFS | Decentralized file storage | NFT metadata, asset hosting |
| Add-ons | Enhanced blockchain APIs | Token balances, NFT data, DeFi |
| DAS API | Solana Digital Asset Standard (add-on) | NFT/token queries, compressed NFTs, asset search |
| Yellowstone gRPC | Solana Geyser streaming (add-on) | Real-time account, transaction, slot data |
| Hypercore | Hyperliquid gRPC/JSON-RPC/WS (beta) | Trades, orders, book updates, blocks, TWAP, events, writer actions |
| SQL Explorer | Direct SQL access to indexed blockchain data | Trading analytics, historical queries, market analysis |
| Admin API | REST API for account management | Endpoint CRUD, usage monitoring, billing |
| Key-Value Store | Serverless key-value and list storage (beta) | Persistent state for Streams, dynamic address lists |
| x402 | Pay-per-request ($0.001/call) or credit drawdown ($10/1M) RPC via stablecoins | Keyless RPC access, AI agents, pay-as-you-go |
| MPP | Pay-per-request RPC via IETF Payment Authentication headers | AI agents, multi-service payments, high-volume sessions |
| Agent Subscriptions | Wallet-paid Quicknode account creation via x402 or MPP, returns a QN_* full platform API key | Autonomous agents that need full platform access without dashboard signup |
Quicknode provides low-latency RPC endpoints for 80+ blockchain networks.
// EVM chains (ethers.js)
import { JsonRpcProvider } from 'ethers';
const provider = new JsonRpcProvider(process.env.QUICKNODE_RPC_URL!);
// EVM chains (viem)
import { createPublicClient, http } from 'viem';
import { mainnet } from 'viem/chains';
const client = createPublicClient({
chain: mainnet,
transport: http(process.env.QUICKNODE_RPC_URL!),
});
// Solana
import { createSolanaRpc } from '@solana/kit';
const rpc = createSolanaRpc(process.env.QUICKNODE_RPC_URL!);
Quicknode endpoints include authentication in the URL:
https://{ENDPOINT_NAME}.{NETWORK}.quiknode.pro/{API_KEY}/
For additional security, enable JWT authentication or IP allowlisting in the Quicknode dashboard.
| Category | Networks | |----------|----------| | EVM | Ethereum, Polygon, Arbitrum, Optimism, Base, BSC, Avalanche, Fantom, zkSync, Scroll, Linea, Hyperliquid EVM (HyperEVM) | | Non-EVM | Solana, Bitcoin, NEAR, Stacks, Cosmos, Sei, Aptos, Sui, TON, Hyperliquid (HyperCore) |
Not exhaustive. Full list: https://www.quicknode.com/chains
As of 2026-02-02. Verify current limits in Quicknode docs before sizing a production system.
| Plan | Requests/sec | Credits/month | |------|-------------|---------------| | Free Trial | 15 | 10M | | Build | 50 | 80M | | Accelerate | 125 | 450M | | Scale | 250 | 950M | | Business | 500 | 2B |
See references/rpc-reference.md for complete RPC documentation including method tables for EVM, Solana, and Bitcoin chains, WebSocket patterns, and batch request examples.
Real-time & historical blockchain data pipelines that filter, transform, and deliver data to your destinations.
| Type | Data | Use Case | |------|------|----------| | Block | Full block data | Block explorers, analytics | | Transaction | Transaction details | Tx monitoring, indexing | | Logs | Contract events | DeFi tracking, NFT sales, token transfers | | Receipt | Transaction receipts | Gas analysis, status tracking |
See references/streams-reference.md for filter examples and full Streams documentation.
Event-driven notifications for blockchain activity.
| Feature | Webhooks | Streams | |---------|----------|---------| | Setup | Simple | More configuration | | Filtering | Address/event-based | Custom JavaScript | | Destinations | HTTP endpoint only | Webhook, S3, Postgres, Azure | | Processing | Basic | Full transformation | | Use Case | Simple alerts | Complex pipelines |
See references/webhooks-reference.md for API examples and full Webhooks documentation.
Decentralized file storage with Quicknode's IPFS gateway.
See references/ipfs-reference.md for upload examples, metadata examples, and complete IPFS documentation.
Enhanced APIs available through Quicknode's marketplace.
// Get all token balances for an address
const response = await fetch(process.env.QUICKNODE_RPC_URL!, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
method: 'qn_getWalletTokenBalance',
params: [{ wallet: '0x...', contracts: [] }]
})
});
// Fetch NFTs owned by address
const response = await fetch(process.env.QUICKNODE_RPC_URL!, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
method: 'qn_fetchNFTs',
params: [{ wallet: '0x...', page: 1, perPage: 10 }]
})
});
// Get recommended priority fees
const response = await rpc.request('qn_estimatePriorityFees', {
last_n_blocks: 100,
account: 'YOUR_ACCOUNT'
}).send();
// Using Metis - Jupiter Swap API
import { createJupiterApiClient } from '@jup-ag/api';
const jupiterApi = createJupiterApiClient({
basePath: `${process.env.QUICKNODE_METIS_URL}`
});
const quote = await jupiterApi.quoteGet({
inputMint: 'So11111111111111111111111111111111111111112',
outputMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
amount: 1000000000,
slippageBps: 50
});
const swapResult = await jupiterApi.swapPost({
swapRequest: {
quoteResponse: quote,
userPublicKey: 'YourPubkey...'
}
});
See references/marketplace-addons.md for complete Add-ons documentation.
Comprehensive API for querying Solana digital assets — standard NFTs, compressed NFTs (cNFTs), fungible tokens, MPL Core Assets, and Token 2022 Assets. Available as a Marketplace add-on (Metaplex DAS API).
Docs: https://www.quicknode.com/docs/solana/solana-das-api
// Get all assets owned by a wallet
const response = await fetch(process.env.QUICKNODE_RPC_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'getAssetsByOwner',
params: {
ownerAddress: 'E645TckHQnDcavVv92Etc6xSWQaq8zzPtPRGBheviRAk',
limit: 10,
options: { showFungible: true, showCollectionMetadata: true }
}
})
});
const { result } = await response.json();
// result.total — total assets
// result.items — array of asset metadata
// result.cursor — for pagination
| Method | Description |
|--------|-------------|
| getAsset | Get metadata for a single asset |
| getAssets | Get metadata for multiple assets |
| getAssetProof | Get Merkle proof for a compressed asset |
| getAssetProofs | Get Merkle proofs for multiple assets |
| getAssetsByAuthority | List assets by authority |
| getAssetsByCreator | List assets by creator |
| getAssetsByGroup | List assets by group (e.g., collection) |
| getAssetsByOwner | List assets by wallet owner |
| getAssetSignatures | Transaction signatures for compressed assets |
| getTokenAccounts | Token accounts by mint or owner |
| getNftEditions | Edition details of a master NFT |
| searchAssets | Search assets with flexible filters |
See references/solana-das-api-reference.md for complete DAS API documentation with all methods, parameters, and examples.
High-performance Solana Geyser plugin for real-time blockchain data streaming via gRPC. Available as a Marketplace add-on.
import Client, { CommitmentLevel } from "@triton-one/yellowstone-grpc";
// Derive from HTTP URL: https://example.solana-mainnet.quiknode.pro/TOKEN/
const client = new Client(
"https://example.solana-mainnet.quiknode.pro:10000",
"TOKEN",
{}
);
const stream = await client.subscribe();
stream.on("data", (data) => {
if (data.transaction) console.log("Tx:", data.transaction);
});
stream.write({
transactions: {
txn_filter: {
vote: false,
failed: false,
accountInclude: ["PROGRAM_PUBKEY"],
accountExclude: [],
accountRequired: [],
},
},
accounts: {},
slots: {},
blocks: {},
blocksMeta: {},
transactionsStatus: {},
entry: {},
accountsDataSlice: [],
commitment: CommitmentLevel.CONFIRMED,
});
| Filter | Description | |--------|-------------| | accounts | Account data changes by pubkey, owner, or data pattern | | transactions | Transaction events with vote/failure/account filters | | transactionsStatus | Lightweight transaction status updates | | slots | Slot progression and status changes | | blocks | Full block data with optional tx/account inclusion | | blocksMeta | Block metadata without full contents | | entry | PoH entry updates |
See references/yellowstone-grpc-reference.md for complete Yellowstone gRPC documentation.
Quicknode's data delivery infrastructure for the Hyperliquid L1 chain. Provides gRPC, JSON-RPC, WebSocket, and Info API access. Currently in public beta.
| Method | Path / Port | Use Case |
|--------|-------------|----------|
| Info API | /info (POST) | 50+ methods for market data, positions, orders |
| JSON-RPC | /hypercore (POST) | Block queries (hl_getBlock, hl_getBatchBlocks) |
| WebSocket | /hypercore/ws | Real-time subscriptions (hl_subscribe) |
| gRPC | Port 10000 | Lowest-latency streaming for trades, orders, books |
| Stream | Volume | Description | |--------|--------|-------------| | TRADES | High | Execution data: coin, price, size, side, fees | | ORDERS | Very High | Order lifecycle with 18+ status types | | BOOK_UPDATES | Very High | L2 order book diffs | | TWAP | Low | Time-weighted average price order updates | | EVENTS | High | Ledger updates, funding, deposits, withdrawals | | BLOCKS | Extreme | Raw HyperCore blocks (gRPC only) | | WRITER_ACTIONS | Low | System-level token transfers |
| Path | Debug/Trace | Archive | Use Case |
|------|-------------|---------|----------|
| /evm | No | Partial | Standard EVM operations |
| /nanoreth | Yes | Extended | Debug, trace, WebSocket subscriptions |
See references/hypercore-hyperliquid-reference.md for complete HyperCore and Hyperliquid documentation.
Direct SQL access to indexed blockchain data without requiring infrastructure. Query billions of rows of on-chain data using standard SQL syntax and receive results in seconds.
Docs: https://www.quicknode.com/docs/sql-explorer
curl -X POST 'https://api.quicknode.com/sql/rest/v1/query' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"query": "SELECT timestamp, coin, side, price, size FROM hyperliquid_trades WHERE block_time > now() - INTERVAL 1 HOUR ORDER BY block_number DESC LIMIT 10",
"clusterId": "hyperliquid-core-mainnet"
}'
Hyperliquid (HyperCore) - Tables covering trades, orders, fills, funding, order book diffs, perpetual markets, spot markets, blocks, transactions, system actions, builder activity, staking, ledger updates, and more.
See references/sql-explorer.md for complete table schemas, query examples, optimization tips, and API reference.
Official JavaScript/TypeScript SDK for Quicknode services.
npm install @quicknode/sdk
import { Core } from '@quicknode/sdk';
const core = new Core({
endpointUrl: process.env.QUICKNODE_RPC_URL!,
});
// Token API
const balances = await core.client.qn_getWalletTokenBalance({
wallet: '0x...',
});
// NFT API
const nfts = await core.client.qn_fetchNFTs({
wallet: '0x...',
page: 1,
perPage: 10,
});
See references/sdk-reference.md for complete SDK documentation.
REST API for programmatic management of Quicknode endpoints, usage, rate limits, security, billing, and teams. Enables infrastructure-as-code workflows.
| Resource | Methods | Endpoint |
|----------|---------|----------|
| Chains | GET | /v0/chains |
| Endpoints | GET, POST, PATCH, DELETE | /v0/endpoints |
| Metrics | GET | /v0/endpoints/{id}/metrics |
| Rate Limits | GET, POST, PUT | /v0/endpoints/{id}/method-rate-limits, /v0/endpoints/{id}/rate-limits |
| Security | GET | /v0/endpoints/{id}/security_options |
| Usage | GET | /v0/usage/rpc, by-endpoint, by-method, by-chain |
| Billing | GET | /v0/billing/invoices |
| Teams | GET | /v0/teams |
All requests use the x-api-key header against https://api.quicknode.com/v0/.
const QN_API_KEY = process.env.QUICKNODE_API_KEY!;
const res = await fetch('https://api.quicknode.com/v0/endpoints', {
headers: { 'x-api-key': QN_API_KEY },
});
const endpoints = await res.json();
See references/admin-api-reference.md for full Admin API documentation including endpoint CRUD, usage monitoring, rate limit configuration, security options, billing, and teams.
Serverless storage for lists and key-value sets, primarily accessed from within Streams filter functions via the qnLib helper library. Also available via REST API.
List operations — manage lists of items (e.g., wallet addresses):
qnLib.qnUpsertList — create or update a listqnLib.qnAddListItem — add item to a listqnLib.qnRemoveListItem — remove item from a listqnLib.qnContainsListItems — batch membership checkqnLib.qnDeleteList — delete a listSet operations — manage key-value pairs:
qnLib.qnAddSet — create a key-value setqnLib.qnGetSet — retrieve value by keyqnLib.qnBulkSets — bulk create/remove setsqnLib.qnDeleteSet — delete a setDocs: https://www.quicknode.com/docs/key-value-store
Pay-per-request RPC access via stablecoin payments. No API key required. Two access patterns: pay-per-request ($0.001/call, no auth needed) and credit drawdown (SIWX auth, $10/1M requests). Supports USDC on Base/Polygon/Solana and USDG on XLayer. Access 140+ chain endpoints.
import { wrapFetch } from "@x402/fetch";
import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";
const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`);
const walletClient = createWalletClient({
account,
chain: base,
transport: http(),
});
// Wrap fetch to auto-handle 402 payments
const x402Fetch = wrapFetch(fetch, walletClient);
// Use like normal fetch — payments are handled automatically
const response = await x402Fetch("https://x402.quicknode.com/ethereum-mainnet", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
jsonrpc: "2.0",
method: "eth_blockNumber",
params: [],
id: 1,
}),
});
See references/x402-reference.md for complete x402 documentation including SIWE authentication, credit management, and the @x402/fetch wrapper.
Pay-per-request RPC access via IETF Payment Authentication headers. No API key required. Two intent types: charge ($0.001/request) and session ($0.00001/request via off-chain vouchers). Payment via PathUSD or USDC.e on Tempo mainnet, PathUSD on Tempo testnet, or USDC on Solana. Access 140+ chain endpoints.
import { Mppx, tempo } from 'mppx/client'
import { privateKeyToAccount } from 'viem/accounts'
const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`)
// Polyfills globalThis.fetch — handles 402 challenges automatically
Mppx.create({
methods: [tempo({ account })],
})
// Charge intent ($0.001/req) — payment is transparent
const response = await fetch('https://mpp.quicknode.com/tempo-mainnet', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'eth_blockNumber',
params: [],
}),
})
const { result } = await response.json()
console.log('Block number:', BigInt(result))
See references/mpp-reference.md for complete MPP documentation including charge vs session intents, Solana setup, CLI usage, and payment receipts.
Programmatic Quicknode account creation for autonomous agents. A single POST to /api/v1/agent/subscriptions with an x402 or MPP payment creates a paid account synchronously and returns a QN_* full platform API key, no dashboard signup or email confirmation required. The same payment SDKs used for x402 and MPP per-request RPC sign the subscription payment.
Docs: https://www.quicknode.com/docs/build-with-ai/agent-subscriptions
To fetch the live plan list, prices, accepted payment networks, asset contract addresses, and recipient (payTo) addresses, send the request without a payment header. The server returns HTTP 402 with the details in the body and a PAYMENT-REQUIRED header (base64-encoded x402 requirement).
curl -X POST https://www.quicknode.com/api/v1/agent/subscriptions \
-H "Content-Type: application/json" \
-d '{}'
Parse the 402 body, pick a plan, then retry the request through the SDK.
import { createQuicknodeX402Client } from '@quicknode/x402'
const client = await createQuicknodeX402Client({
baseUrl: 'https://www.quicknode.com',
network: 'eip155:8453', // Base Mainnet
evmPrivateKey: process.env.PRIVATE_KEY as `0x${string}`,
})
const res = await client.fetch(
'https://www.quicknode.com/api/v1/agent/subscriptions',
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
plan_name: 'b6_build', // b6_build | b6_accelerate | b6_scale | b6_business
interval: 'monthly', // monthly | yearly
email: '[email protected]',
password: process.env.ACCOUNT_PASSWORD,
password_confirmation: process.env.ACCOUNT_PASSWORD,
full_name: 'Autonomous Agent',
name: 'Agent Account',
billing_address: {
line1: '123 Main St',
city: 'New York',
postal_code: '10001',
country: 'US',
},
}),
},
)
const { api_key } = await res.json() // "QN_..." full platform API key
The returned api_key is the same QUICKNODE_API_KEY used everywhere else in this skill. Use it against https://api.quicknode.com/v0/... to provision endpoints, configure security, top up credits, read balances, and so on.
Paying with Solana? Use
@quicknode/x402-solanato sign x402 payments with a Solana keypair instead of an EVM private key. Once configured, the subscription request body and Admin API steps are identical to the x402 example above. See the How to Access Solana RPC with x402 guide for setup details.
import { Mppx, tempo } from 'mppx/client'
import { privateKeyToAccount } from 'viem/accounts'
const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`)
// Activate MPP. Polyfills globalThis.fetch so 402 challenges are
// intercepted, signed, and retried automatically inside fetch.
Mppx.create({ methods: [tempo({ account })] })
const subscriptionRes = await fetch(
'https://www.quicknode.com/api/v1/agent/subscriptions',
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
plan_name: 'b6_build', // b6_build | b6_accelerate | b6_scale | b6_business
interval: 'monthly', // monthly | yearly
email: '[email protected]',
password: process.env.ACCOUNT_PASSWORD,
password_confirmation: process.env.ACCOUNT_PASSWORD,
full_name: 'Autonomous Agent',
name: 'Agent Account',
billing_address: {
line1: '123 Main St',
city: 'New York',
postal_code: '10001',
country: 'US',
},
}),
},
)
const { api_key } = await subscriptionRes.json() // "QN_..." full platform API key
| Method | Path | Auth | Rate limit | Purpose |
|--------|------|------|------------|---------|
| POST | /api/v1/agent/subscriptions | Payment header (x402 or MPP) | 30/min | Create account and subscription |
| POST | /api/v1/agent/top_up | API key + payment header | 30/min | Add credits to an existing subscription |
| GET | /api/v1/agent/balance | API key | 60/min | Read current credit balance |
All requests target https://www.quicknode.com.
b6_build, b6_accelerate, b6_scale, b6_business. Map directly to the public Build / Accelerate / Scale / Business plans on pricing. Use the discovery 402 above when the agent needs to choose a plan dynamically.
email and password instead of creating a duplicate account.import { Core } from '@quicknode/sdk';
const chains = {
ethereum: new Core({
endpointUrl: 'https://YOUR_ETH_ENDPOINT.quiknode.pro/KEY/'
}),
polygon: new Core({
endpointUrl: 'https://YOUR_POLYGON_ENDPOINT.quiknode.pro/KEY/'
}),
arbitrum: new Core({
endpointUrl: 'https://YOUR_ARB_ENDPOINT.quiknode.pro/KEY/'
}),
};
// Use appropriate chain
const ethBalance = await chains.ethereum.client.getBalance({ address: '0x...' });
/info) for account state and market metadataSELECT * FROM hyperliquid_trades WHERE block_time > ...GROUP BY for volume, counts, averagesWHERE block_time > ...)Main Docs: https://www.quicknode.com/docs/
Streams: https://www.quicknode.com/docs/streams
Webhooks: https://www.quicknode.com/docs/webhooks
IPFS: https://www.quicknode.com/docs/ipfs
SDK: https://www.quicknode.com/docs/quicknode-sdk
Admin API: https://www.quicknode.com/docs/admin-api
DAS API (Solana): https://www.quicknode.com/docs/solana/solana-das-api
Yellowstone gRPC: https://www.quicknode.com/docs/solana/yellowstone-grpc/overview
Hyperliquid: https://www.quicknode.com/docs/hyperliquid
Hyperliquid gRPC: https://www.quicknode.com/docs/hyperliquid/grpc-api
SQL Explorer: https://www.quicknode.com/docs/sql-explorer
SQL Explorer REST API: https://www.quicknode.com/docs/sql-explorer/using-rest-api
Hyperliquid Queries: - https://www.quicknode.com/docs/sql-explorer/hyperliquid-queries
Schema Reference: https://www.quicknode.com/docs/sql-explorer/schema-reference
Key-Value Store: https://www.quicknode.com/docs/key-value-store
x402: https://x402.quicknode.com
MPP: https://mpp.quicknode.com
Agent Subscriptions: https://www.quicknode.com/docs/build-with-ai/agent-subscriptions
Build with AI Overview: https://www.quicknode.com/docs/build-with-ai
Agents reference (agents.md): https://www.quicknode.com/agents.md
https://www.quicknode.com/docs/{chain-or-product}/llms.txt)development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.
development
End-to-end Parallels smoke, upgrade, and rerun workflow for OpenClaw across macOS, Windows, and Linux guests. Use when Codex needs to run, rerun, debug, or interpret VM-based install, onboarding, gateway smoke tests, latest-release-to-main upgrade checks, fresh snapshot retests, or optional Discord roundtrip verification under Parallels.