Graph Advocate

Route 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.

Audits

Pending

Install

openclaw skills install graph-advocate

Graph Advocate

Ask any blockchain data question in plain English. Get back live data — not just a recommendation.

Routing

Match the user's intent to the right service. Load only the reference you need.

IntentServiceReferenceUse for
Token balances, holders, swaps, NFTstoken-apitoken-api.mdWallet data across EVM, Solana, TON
Polymarket markets, OHLCV, P&L, positionstoken-apitoken-api.mdREST endpoints under /v1/polymarket/* — no npm install
Find a subgraph for a protocolsubgraph-registrysubgraph-registry.mdSearch 15,500+ subgraphs by protocol/chain
Aave lending datagraph-aave-mcpaave.md40 tools — V2/V3/V4, liquidations, rates
Polymarket advanced (orderbook, disputes, trader winrate/drawdown)graph-polymarket-mcppolymarket.md31 tools — live CLOB, UMA resolution, subgraph-specific P&L stats
Cross-protocol lendinggraph-lending-mcpMessari standardized — 40+ protocols on 15 chains
Limitless prediction marketsgraph-limitless-mcpMarkets on Base
Predict.fun prediction marketspredictfun-mcpBNB Chain prediction markets
x402 payment analyticsx402-analyticsx402.mdPayment volume, facilitators, daily stats on Base
Raw block data, streamingsubstreamsTraces, logs, custom transformations
Agent discovery (ERC-8004)8004scanFind AI agents by capability
MCP server authmcp8004ERC-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.

Quick Examples

"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

How It Works

  1. Agent sends plain-English question
  2. Graph Advocate identifies the best service
  3. Searches the subgraph registry (15,500+ subgraphs with query hints)
  4. Executes the query and returns live data in the response
  5. Includes get_started link for agents to get their own free API key

Response Format

{
  "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
}

Endpoints

MethodURLPurpose
POSThttps://graphadvocate.com/A2A JSON-RPC 2.0
POSThttps://graphadvocate.com/chatSimple HTTP chat
GEThttps://graphadvocate.com/.well-known/agent-card.jsonAgent card
GEThttps://graphadvocate.com/agents/capabilities.jsonMachine-readable capability list
GEThttps://graphadvocate.com/mcp/catalogList of installable MCP servers
GEThttps://graphadvocate.com/llms.txtLLM-friendly discovery file
GEThttps://graphadvocate.com/quota?sender=0x...Free-tier quota remaining today (no charge)
GEThttps://graphadvocate.com/dashboardLive monitoring
POSThttps://graphadvocate.com/feedbackAgent feedback

Default mode: no wallet, free tier

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.

Optional paid mode (opt-in)

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.

Pricing

  • /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)

Per-call approval (recommended)

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.

Free-quota visibility (no-charge)

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:

  1. Display "N free queries remaining today" in your UI before the agent runs.
  2. Halt autonomous loops when remaining_today hits 0 instead of accepting the 402 challenge.
  3. Audit per-sender spend by polling daily.

Required spend controls before autonomous use

  1. Dedicated low-balance wallet. Fund only what you're willing to spend in a session (e.g. $5 USDC). Never connect a wallet that holds your treasury.
  2. Spend caps in your agent runtime. Most x402 clients accept maxAmountPerCall and maxTotalSpend parameters. If yours does not, wrap calls to this skill in a counter that breaks after N invocations.
  3. Stop conditions. Add at least one of:
    • Hard cap on call count per task (e.g. max_calls_per_run = 5)
    • Time bound on the task (e.g. abort after 5 minutes)
    • Cost ceiling check before each call (read wallet USDC balance; halt if below threshold)
  4. First-run probe mode. Treat the first execution as a probe — log every call, inspect spend, then enable autonomous mode only after confirming the per-task cost matches expectations.

Receipts and no-charge surface

  • Every paid call returns an 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."
  • No-charge endpoints never trigger payment: /.well-known/agent-card.json, /agents/capabilities.json, /mcp/catalog, /llms.txt, /dashboard, /chat, /quota, GET /.

Payments are received by Ampersend smart account 0x0FF5A6ecef783BBA35463ec2F8403B9B5e9e7C86.

External Endpoints

EndpointData sentPurpose
graphadvocate.comYour plain-English queryRoutes to the right Graph service
gateway.thegraph.com/api/GraphQL queriesExecutes subgraph queries for live data
token-api.thegraph.com/REST requestsFetches token/NFT/swap data
api.studio.thegraph.comGraphQL queriesx402 payment analytics

Security & Privacy

  • Instruction-only skill — no code is downloaded or executed on your machine
  • No credentials required — Graph Advocate does not need API keys from you
  • No local file access — reads nothing from your filesystem
  • Stateless — no session data persists between requests

Identity

Trust Statement

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.

Links