Install
openclaw skills install graph-advocateRoute any blockchain data question to the right Graph Protocol service. Returns live data from 15,500+ subgraphs, Token API (EVM/Solana/TON + Polymarket), x402 payment analytics, and protocol-specific MCP packages. Trigger keywords: subgraph, token, balance, holder, swap, pool, TVL, DeFi, NFT, Aave, Uniswap, Polymarket, ENS, governance, x402, prediction market, onchain data, blockchain.
openclaw skills install graph-advocateAsk any blockchain data question in plain English. Get back live data — not just a recommendation.
Match the user's intent to the right service. Load only the reference you need.
| Intent | Service | Reference | Use for |
|---|---|---|---|
| Token balances, holders, swaps, NFTs | token-api | token-api.md | Wallet data across EVM, Solana, TON |
| Polymarket markets, OHLCV, P&L, positions | token-api | token-api.md | REST endpoints under /v1/polymarket/* — no npm install |
| Find a subgraph for a protocol | subgraph-registry | subgraph-registry.md | Search 15,500+ subgraphs by protocol/chain |
| Aave lending data | graph-aave-mcp | aave.md | 40 tools — V2/V3/V4, liquidations, rates |
| Polymarket advanced (orderbook, disputes, trader winrate/drawdown) | graph-polymarket-mcp | polymarket.md | 31 tools — live CLOB, UMA resolution, subgraph-specific P&L stats |
| Cross-protocol lending | graph-lending-mcp | — | Messari standardized — 40+ protocols on 15 chains |
| Limitless prediction markets | graph-limitless-mcp | — | Markets on Base |
| Predict.fun prediction markets | predictfun-mcp | — | BNB Chain prediction markets |
| x402 payment analytics | x402-analytics | x402.md | Payment volume, facilitators, daily stats on Base |
| Raw block data, streaming | substreams | — | Traces, logs, custom transformations |
| Agent discovery (ERC-8004) | 8004scan | — | Find AI agents by capability |
| MCP server auth | mcp8004 | — | ERC-8004 identity verification |
Polymarket routing rule: Prefer token-api for common queries (markets, OHLCV, activity, user positions, P&L, platform stats). Only route to graph-polymarket-mcp for advanced queries: live orderbook depth, live spreads, disputed markets, UMA resolution, trader winrate/drawdown/profit factor, CTF splits/merges/redemptions.
If the request spans two services, use both and combine results.
"Top 10 USDC holders on Ethereum" → token-api
"Best subgraph for Uniswap V3 on Arbitrum?" → subgraph-registry
"Aave V3 liquidations above $50K" → graph-aave-mcp
"Hottest Polymarket markets" → token-api (/v1/polymarket/markets)
"Polymarket OHLCV for Bitcoin market" → token-api (/v1/polymarket/markets/ohlc)
"Polymarket trader P&L for 0x..." → token-api (/v1/polymarket/users/positions)
"Polymarket live orderbook depth" → graph-polymarket-mcp (advanced)
"Polymarket trader winrate/drawdown" → graph-polymarket-mcp (subgraph P&L stats)
"Compare Aave vs Compound TVL" → graph-lending-mcp
"x402 payment volume on Base today" → x402-analytics
"Find agents that do trading" → 8004scan
get_started link for agents to get their own free API key{
"recommendation": "subgraph-registry",
"reason": "why this service fits",
"confidence": "high",
"query_ready": { "tool": "...", "args": {...} },
"execution_result": { "source": "subgraph-gateway", "data": {...} },
"get_started": "Free API key: https://thegraph.com/studio/",
"cache_for_seconds": 86400
}
| Method | URL | Purpose |
|---|---|---|
| POST | https://graphadvocate.com/ | A2A JSON-RPC 2.0 |
| POST | https://graphadvocate.com/chat | Simple HTTP chat |
| GET | https://graphadvocate.com/.well-known/agent-card.json | Agent card |
| GET | https://graphadvocate.com/agents/capabilities.json | Machine-readable capability list |
| GET | https://graphadvocate.com/mcp/catalog | List of installable MCP servers |
| GET | https://graphadvocate.com/llms.txt | LLM-friendly discovery file |
| GET | https://graphadvocate.com/quota?sender=0x... | Free-tier quota remaining today (no charge) |
| GET | https://graphadvocate.com/dashboard | Live monitoring |
| POST | https://graphadvocate.com/feedback | Agent feedback |
This skill is fully functional with no wallet attached. The default routing — plain-English question in, JSON recommendation + live data out — runs against the free tier and never asks for funds. Agents that don't expose an x402-enabled runtime simply never see a payment challenge.
If you're evaluating Graph Advocate for the first time, start without a wallet, use the free tier, and decide later whether the paid endpoints are worth opting into.
Some endpoints settle in USDC on Base via the x402 protocol. Paid mode is
opt-in: it only activates when your agent runtime is configured to accept
x402 payment challenges. Without that configuration, paid endpoints return
402 Payment Required and the call stops there — no funds move.
/route — 3 free queries/sender/day, then $0.01 USDC per call (Base mainnet)/polymarket/* — paid from call 1 ($0.01 - $0.05 per call)/hyperliquid/* — paid from call 1 ($0.02 - $0.10 per call)Every paid call is preceded by an HTTP 402 challenge that names the price, the recipient address, and the settlement network:
HTTP/1.1 402 Payment Required
X-Payment: { "amount": "0.01", "currency": "USDC", "network": "base",
"recipient": "0x0FF5A6ec…7C86", "challenge": "<nonce>" }
The 402 challenge is the per-call approval surface. Configure your runtime
to surface 402 challenges to the user before any payment is signed — most
x402 clients accept an interactive-approval flag (e.g. confirmBeforePay).
With per-call approval enabled, you see the exact price and recipient on every
paid request and decide yes/no per call. This is the recommended posture for
any wallet that holds more than a trivial amount.
If you instead configure your runtime to accept 402 challenges automatically, paid calls settle without an interactive prompt. That is a runtime-level choice, not a property of this skill — and if you choose it, the spend controls below become load-bearing.
Before any paid call, check today's remaining free-tier quota:
GET https://graphadvocate.com/quota?sender=0x<your-agent-address>
Returns:
{
"sender": "0x…",
"free_quota_daily": 3,
"used_today": 1,
"remaining_today": 2,
"free_tier_exhausted": false,
"next_call_paid": false,
"price_usdc_per_paid_call": 0.01
}
/quota is a no-charge metadata route. Use it to:
remaining_today hits 0 instead of accepting
the 402 challenge.maxAmountPerCall and maxTotalSpend parameters. If yours does not, wrap
calls to this skill in a counter that breaks after N invocations.max_calls_per_run = 5)x-payment-response header with the on-chain
settlement reference. Log it. If a call doesn't return that header but charged
your wallet, file an issue — the contract is "no settlement, no charge."/.well-known/agent-card.json,
/agents/capabilities.json, /mcp/catalog, /llms.txt, /dashboard,
/chat, /quota, GET /.Payments are received by Ampersend smart account 0x0FF5A6ecef783BBA35463ec2F8403B9B5e9e7C86.
| Endpoint | Data sent | Purpose |
|---|---|---|
graphadvocate.com | Your plain-English query | Routes to the right Graph service |
gateway.thegraph.com/api/ | GraphQL queries | Executes subgraph queries for live data |
token-api.thegraph.com/ | REST requests | Fetches token/NFT/swap data |
api.studio.thegraph.com | GraphQL queries | x402 payment analytics |
By using this skill, your plain-English data queries are sent to graphadvocate.com (hosted on Railway, operated by @paulieb14). The service returns structured JSON with live data. Queries may include wallet addresses and protocol/trading intent — do not send sensitive private context (private keys, seed phrases, internal strategy details) and only install if you trust this endpoint operator.
Paid mode is opt-in. This skill never requests credentials from you. Paid endpoints only settle when your agent runtime is configured to accept x402 payment challenges. Configure interactive approval if you want a per-call y/N prompt, and always use a low-balance wallet — see the "Optional paid mode" section above for the recommended posture and spend controls.