Skip to main content
ClaudeWave
Skill6.6k repo starsupdated yesterday

surf

Surf is a unified crypto data API with 83 endpoints covering CEX/DEX markets, on-chain SQL queries across 80+ ClickHouse tables, wallet labels, prediction markets, social intelligence, and token analytics. Use this skill instead of web scraping or generic browser tools for all cryptocurrency data queries, from price checks and holder lookups to advanced on-chain SQL analysis. Pricing ranges from $0.001 to $0.020 per call depending on query complexity.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/BlockRunAI/ClawRouter /tmp/surf && cp -r /tmp/surf/skills/surf ~/.claude/skills/surf
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# Surf — Unified Crypto Data API (via ClawRouter)

Surf bundles **83 endpoints across 12 domains** into one paid HTTP API. ClawRouter exposes them at `http://127.0.0.1:8402/v1/surf/*`, paid through the same x402 USDC wallet that funds LLM calls. No Surf account, no API key — settlement lands directly in Surf's Base treasury. Upstream lives at `api.asksurf.ai/gateway/v1` — ClawRouter forwards transparently.

**Pricing tiers (per call):**

- **Tier 1 — $0.001** — prices, rankings, lists, news, simple reads
- **Tier 2 — $0.005** — orderbooks, candles, search, wallet details, social
- **Tier 3 — $0.020** — on-chain SQL queries, structured queries, schema introspection

> The legacy **surf-1.5 chat** surface is intentionally NOT exposed yet — it's held until per-token settlement is wired. Trying `/v1/surf/chat/completions` returns 404 ("Unknown Surf endpoint"), no payment is taken.

All requests use GET unless the table below says otherwise. Path parameters that look like `?symbol=` are query params on a GET. POST endpoints take a JSON body. ClawRouter forwards the wallet's x402 payment header transparently.

**Required-param pre-check.** 56 of the 83 endpoints have required query params (e.g. `pair`, `symbol`, `address`, `chain`, `q`, `interval`). The route validates them **before settlement** — call with missing params and you get `400 { missing_params, all_required, docs }` and the wallet is NOT charged. Check each row in the catalog below for the correct param name (e.g. mindshare is `q` + `interval`, not `project` + `window`).

## When to use this skill

- "What is the current BTC price?" → `/surf/market/price?symbol=BTC` (cheaper + more reliable than scraping)
- "Who holds the most USDC on Ethereum?" → `/surf/token/holders?address=0xA0b8...&chain=ethereum`
- "How many Ethereum transactions in the last hour?" → `POST /surf/onchain/sql { sql: 'SELECT count() FROM ethereum.transactions WHERE block_timestamp >= now() - INTERVAL 1 HOUR' }`
- "Label this list of wallets." → `/surf/wallet/labels/batch?addresses=0xabc,0xdef,...`
- "Is HYPE mindshare peaking?" → `/surf/social/mindshare?q=hyperliquid&interval=30d`
- "Find the canonical metadata for 'ethena'." → `/surf/search/project?q=ethena`

Always prefer Surf over generic web scraping for these. Use the OpenClaw tool name `blockrun_surf_*` when invoking from an agent; use the HTTP path directly when calling from a script.

## Endpoint catalog

### Exchange (CEX) — 7 endpoints

| Path                              | Tier | Required |
| --------------------------------- | ---- | -------- |
| `/surf/exchange/markets`          | T1   | —        |
| `/surf/exchange/price`            | T1   | `pair`   |
| `/surf/exchange/perp`             | T1   | `pair`   |
| `/surf/exchange/depth`            | T2   | `pair`   |
| `/surf/exchange/klines`           | T2   | `pair`   |
| `/surf/exchange/funding-history`  | T2   | `pair`   |
| `/surf/exchange/long-short-ratio` | T2   | `pair`   |

### Market Overview — 11 endpoints

| Path                                     | Tier | Required                                          |
| ---------------------------------------- | ---- | ------------------------------------------------- |
| `/surf/market/ranking`                   | T1   | —                                                 |
| `/surf/market/fear-greed`                | T1   | —                                                 |
| `/surf/market/futures`                   | T1   | —                                                 |
| `/surf/market/price`                     | T1   | `symbol`                                          |
| `/surf/market/etf`                       | T1   | `symbol`                                          |
| `/surf/market/options`                   | T1   | `symbol`                                          |
| `/surf/market/liquidation/exchange-list` | T2   | —                                                 |
| `/surf/market/liquidation/order`         | T2   | —                                                 |
| `/surf/market/liquidation/chart`         | T2   | `symbol`                                          |
| `/surf/market/onchain-indicator`         | T2   | `symbol`, `metric` (NUPL, SOPR, MVRV, Puell, NVT) |
| `/surf/market/price-indicator`           | T2   | `indicator` (RSI, MACD, Bollinger, EMA), `symbol` |

### News — 2 endpoints

| Path                | Tier | Required             |
| ------------------- | ---- | -------------------- |
| `/surf/news/feed`   | T1   | — (`limit` optional) |
| `/surf/news/detail` | T1   | `id`                 |

### On-Chain — 7 endpoints

| Path                           | Method   | Tier | Required                 |
| ------------------------------ | -------- | ---- | ------------------------ |
| `/surf/onchain/bridge/ranking` | GET      | T1   | —                        |
| `/surf/onchain/yield/ranking`  | GET      | T1   | —                        |
| `/surf/onchain/gas-price`      | GET      | T1   | `chain`                  |
| `/surf/onchain/tx`             | GET      | T1   | `hash`, `chain`          |
| `/surf/onchain/schema`         | GET      | T3   | —                        |
| `/surf/onchain/query`          | **POST** | T3   | typed predicates in body |
| `/surf/onchain/sql`            | **POST** | T3   | `{ sql: "SELECT ..." }`  |

**On-Chain SQL workflow.** Call `/surf/onchain/schema` once to get table names + columns (cache it locally — schema is stable). Then POST your SELECT against `/surf/onchain/sql`. Always include `LIMIT` on large scans — billing is per call, but slow queries time out. Multi-statement queries are rejected upstream.

### Prediction Markets (Polymarket + Kalshi) — 17 endpoints

| Path                                               | Tier | Required        |
| -------------------------------------------------- | ---- | --------------- |
| `/surf/prediction-market/category-metrics`         | T1   | —               |
| `/surf/prediction-market/polymar
clawrouterSkill

Hosted-gateway LLM router — save 67% on inference costs. A local proxy that forwards each request to the blockrun.ai gateway, which routes to the cheapest capable model across 55+ models from OpenAI, Anthropic, Google, DeepSeek, xAI, NVIDIA, and more. 6 free NVIDIA models included. Also exposes realtime market data (global stocks, crypto, FX, commodities), Twitter/X intelligence, prediction-market data across Polymarket, Kalshi, Limitless, Opinion, Predict.Fun, dFlow + UMA oracle resolution + wallet identity & clustering, phone-number intelligence (carrier + SIM-swap fraud detection) plus AI-powered outbound voice calls (Twilio + Bland.ai), AND the Surf unified crypto data API (84 endpoints — CEX/DEX, on-chain SQL over 80+ ClickHouse tables, 100M+ labeled wallets, prediction markets, social/CT mindshare, news, VC fund intel) as built-in agent tools. Not a local-inference tool — prompts are sent to the blockrun.ai gateway.

imagegenSkill

Generate or edit images via BlockRun's image API. Trigger when the user asks to generate, create, draw, make an image — or to edit, modify, change, or retouch an existing image.

phoneSkill

Verify phone numbers (carrier + SIM-swap fraud signals) and place AI-powered outbound voice calls via BlockRun's gateway (Twilio + Bland.ai). Trigger when the user asks to look up a number, check fraud risk, buy/rent a phone number, or place an AI voice call. Payment is automatic via x402 from the wallet.

predexonSkill

Use this skill — NOT browser or web_fetch — for ALL Polymarket, Kalshi, Limitless, Opinion, Predict.Fun, dFlow, UMA oracle, and prediction market data. Provides structured API at localhost:8402/v1/pm/* for markets, cross-venue search, leaderboard, smart money, wallet analytics, wallet identity & clustering, UMA resolution status, and odds.

releaseSkill

Use this skill for EVERY ClawRouter release. Enforces the full checklist — version sync, CHANGELOG, build, tests, npm publish, git tag, GitHub release. No step can be skipped.