Install
openclaw skills install m10-blockchain-agentAsk natural language questions about Ethereum blockchain data. Covers historical on-chain activity (events, transactions, blocks, token transfers, NFTs), liv...
openclaw skills install m10-blockchain-agentAsk a question in plain English. Get a structured analysis backed by live blockchain data — no query language, no SDKs, no index knowledge required.
| Base URL | https://agent.onesource.io |
| Auth | HTTP 402 (x402 protocol, no API keys) |
| Price | $0.04 USDC per query |
| Networks | Ethereum mainnet · Sepolia · Avalanche |
This is a paid endpoint. Requests without payment receive HTTP 402 with a
payment-required header describing the price, network, and recipient. Paid
requests include a payment-signature header and are processed normally.
Payment uses the x402 protocol — an open standard for HTTP-native payments. The skill itself does not manage wallets or signing; it only returns standard HTTP 402 responses. Payment handling is the responsibility of the calling client or platform.
https://agent.onesource.io — an external service
operated by OneSource. Your natural-language query
text and any addresses you include are transmitted.query_traces in the response contains an audit trail of internal data
lookups. This may echo parts of your query. Omit it from user-facing output
if not needed.5.8 billion+ records across Ethereum mainnet, Sepolia testnet, and Avalanche C-Chain.
Events & Activity
Transactions
Blocks
Token Transfers (ERC-20 / ERC-721 / ERC-1155)
NFTs
Contracts
Real-time lookups directly from Ethereum archive nodes — no indexing lag.
Analyze any deployed contract's bytecode — including unverified contracts — to extract its interface without needing source code.
Requests are priced per-query at $0.04 USDC via the x402 payment protocol (see Payment above).
| Network | Asset | Scheme | Endpoint |
|---|---|---|---|
| Base | USDC | exact | https://agent.onesource.io |
The usage.estimated_cost_usd field in every response shows exactly what
each query cost.
POST /
Content-Type: application/json
{
"query": "string — required. Your natural language question.",
"session_id": "string — optional. Custom ULID. Auto-generated if omitted."
}
{
"session_id": "01JMQX7K3N...",
"status": "completed | error | processing",
"summary": "Plain text summary, 1–3 sentences. Present on success.",
"response": "Full Markdown analysis with tables, headers, code blocks.",
"steps": [
{
"agent": "router | opensearch | rpc | evmole",
"action": "Description of what was queried",
"status": "completed | failed"
}
],
"usage": {
"total_tokens": 5820,
"estimated_cost_usd": 0.0018
},
"query_traces": [...],
"error": "string | null"
}
summary — plain text, 1–3 sentences. Display this prominently.
response — full Markdown. Render it, don't parse it as structured data.
query_traces — raw audit trail of every data query made internally.
| Code | Meaning | Fix |
|---|---|---|
| 402 | Payment required | Include payment-signature header |
| 409 | Session already exists | Omit session_id or use a new one |
| 422 | Malformed request | Check query field is present |
| 500 | Pipeline error | Try rephrasing the query |
The agent rejects queries requiring unbounded full-index scans with no filter:
Add a filter (address, time range, event type, contract) and it works: