Source profileQuality 92/100

BlockRunAI/blockrun-mcp/skills/surf/SKILL.md

surf

Use when the user wants crypto data — token prices, on-chain SQL, prediction-market positions, CEX order books, wallet labels/net-worth, social mindshare, news, or unified search. 83 endpoints across exchange, on-chain, wallet, social, prediction, news and search — one API, flat $0.0085/call in USDC via x402. Settles directly to Surf's Base treasury; no Surf account needed.

Source repository stars
389
Declared platforms
0
Static risk flags
1
Last source update
2026-08-21
Source checked
2026-08-25

Decision brief

What it does: where it fits

Surf (asksurf.ai) aggregates 83 crypto data endpoints across CEX market data, on-chain SQL (13 chains, 80+ ClickHouse tables), 100M+ labeled wallets, prediction markets (Polymarket + Kalshi side-by-side), social/CT intelligence, news and unified search.

Best for

  • onchain/query — structured, typed predicates against ClickHouse
  • onchain/sql — raw SQL string in { sql: "..." }

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/BlockRunAI/blockrun-mcp --skill "skills/surf"
Safe inspection promptEditorial

Inspect the Agent Skill "surf" from https://github.com/BlockRunAI/blockrun-mcp/blob/2c23d5e9d325fc7be3bd6bc2da15cc0805be9502/skills/surf/SKILL.md at commit 2c23d5e9d325fc7be3bd6bc2da15cc0805be9502. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    How to Call from MCP

    One tool, three params. The MCP tool auto-routes method (POST when body is set, GET otherwise) and auto-validates required params before settling:

    One tool, three params. The MCP tool auto-routes method (POST when body is set, GET otherwise) and auto-validates required params before settling:
  2. 02

    Pricing — one flat rate

    $0.0085 per call. Every endpoint, no tiers, including raw on-chain SQL.

    $0.0085 per call. Every endpoint, no tiers, including raw on-chain SQL.Verified against the gateway's own payment-required header, which is free to request — send any call with no payment header and it quotes the exact charge. All of market/price, wallet/labels/batch, social/mindshare, new…Ignore any "premium tier" pricing you may have seen — SQL used to cost more and no longer does.
  3. 03

    Do NOT use Surf for prediction markets

    Surf carries 17 prediction-market/ endpoints (Polymarket + Kalshi). Use blockrunmarkets (Predexon) instead — same data, same price, and far deeper.

    Surf carries 17 prediction-market/ endpoints (Polymarket + Kalshi). Use blockrunmarkets (Predexon) instead — same data, same price, and far deeper.Predexon used to be 7.5× cheaper; since 2026-07-15 both bill the same flat rate, so the choice is now purely about coverage — and Predexon still wins on coverage by a wide margin.The only Surf prediction-market endpoint with no Predexon equivalent is prediction-market/category-metrics. Everything else is a strictly worse buy. See skills/prediction-markets/SKILL.md.
  4. 04

    Quick Decision Table — "User asks about X"

    Review the “Quick Decision Table — "User asks about X"” section in the pinned source before continuing.

    Review and apply the “Quick Decision Table — "User asks about X"” source section.
  5. 05

    Worked Examples

    Cost: $0.0085. Returns price history; latest point = current price.

    Cost: $0.0085. Returns price history; latest point = current price.Cost: $0.0085. Raw ClickHouse — same query language Surf's own UI uses, at the same flat rate as any other Surf read.Cost: 4 × $0.0085 = $0.034. Replaces a Nansen subscription for one-off lookups.

Permission review

Static risk signals and limitations

Network access

medium · line 25

The documentation includes network, browsing, or remote request actions.

Verified against the gateway's own `payment-required` header, which is free to request — send any call with no payment header and it quotes the exact charge. All of `market/price`, `wallet/labels/batch`, `social/mindshare`, `news/feed`, `ex

Network access

medium · line 88

The documentation includes network, browsing, or remote request actions.

| **Web search (crypto-scoped)** | GET | `search/web` | `q` |

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score92/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars389SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
BlockRunAI/blockrun-mcp
Skill path
skills/surf/SKILL.md
Commit
2c23d5e9d325fc7be3bd6bc2da15cc0805be9502
License
MIT
Collected
2026-08-25
Default branch
main
View the original SKILL.md

Surf — Crypto Data via BlockRun

Surf (asksurf.ai) aggregates 83 crypto data endpoints across CEX market data, on-chain SQL (13 chains, 80+ ClickHouse tables), 100M+ labeled wallets, prediction markets (Polymarket + Kalshi side-by-side), social/CT intelligence, news and unified search.

BlockRun is Surf's x402 payment rail — every call settles directly to Surf's Base treasury. You hold the wallet, BlockRun holds the Surf key, Surf holds the data. No Surf account, no API key, no monthly minimum.

How to Call from MCP

One tool, three params. The MCP tool auto-routes method (POST when body is set, GET otherwise) and auto-validates required params before settling:

blockrun_surf({ path: "market/price", params: { symbol: "BTC" } })

blockrun_surf({ path: "onchain/sql", body: {
  sql: "SELECT token_address, count() FROM ethereum.dex_trades WHERE block_time > now() - INTERVAL 1 DAY GROUP BY 1 ORDER BY 2 DESC LIMIT 10"
}})

blockrun_surf({ path: "wallet/labels/batch", params: { addresses: "0xabc,0xdef" } })

Pricing — one flat rate

$0.0085 per call. Every endpoint, no tiers, including raw on-chain SQL.

Verified against the gateway's own payment-required header, which is free to request — send any call with no payment header and it quotes the exact charge. All of market/price, wallet/labels/batch, social/mindshare, news/feed, exchange/klines, search/web and onchain/sql return the same $0.0085 (SURF_TIER_1/2/3_PRICE are all identical upstream).

Ignore any "premium tier" pricing you may have seen — SQL used to cost more and no longer does.

Wrong / missing required params return HTTP 400 without charging — pre-validation runs before settlement.

Do NOT use Surf for prediction markets

Surf carries 17 prediction-market/* endpoints (Polymarket + Kalshi). Use blockrun_markets (Predexon) instead — same data, same price, and far deeper.

Predexon used to be 7.5× cheaper; since 2026-07-15 both bill the same flat rate, so the choice is now purely about coverage — and Predexon still wins on coverage by a wide margin.

Predexon (blockrun_markets)Surf
Polymarket / Kalshi markets$0.0085$0.0085 (same)
Wallet clustering, smart money, leaderboards❌ none
Limitless, Opinion, Predict.Fun, sports, UMA❌ Polymarket + Kalshi only

The only Surf prediction-market endpoint with no Predexon equivalent is prediction-market/category-metrics. Everything else is a strictly worse buy. See skills/prediction-markets/SKILL.md.

Reach for Surf when Predexon cannot answer it: on-chain SQL, 100M+ wallet labels across 13 chains, 16 CEXs, social/CT intelligence, news, tokenomics/unlocks, liquidations, ETF flows, VC portfolios. Predexon has none of those.

Quick Decision Table — "User asks about X"

User wants…MethodPathRequired
BTC/ETH priceGETmarket/pricesymbol
ETF flow historyGETmarket/etfsymbol
Fear & Greed indexGETmarket/fear-greed
Top 100 tokens by market capGETmarket/ranking
Options skew / IV / volumeGETmarket/optionssymbol
CEX ticker for a pairGETexchange/pricepair
Perp snapshot (funding + OI)GETexchange/perppair
Order book depthGETexchange/depthpair
OHLCV candlesGETexchange/klinespair
Funding rate historyGETexchange/funding-historypair
Long/short ratioGETexchange/long-short-ratiopair
Bridge protocols by volumeGETonchain/bridge/ranking
Yield pool rankingGETonchain/yield/ranking
Current gas price (per chain)GETonchain/gas-pricechain
Transaction detailsGETonchain/txhash, chain
Raw on-chain SQLPOSTonchain/sqlbody: sql
Structured on-chain queryPOSTonchain/querybody: typed predicates
Inspect ClickHouse schemaGETonchain/schema
Polymarket markets rankingGETprediction-market/polymarket/ranking
Polymarket price historyGETprediction-market/polymarket/pricescondition_id
Polymarket positions for walletGETprediction-market/polymarket/positionsaddress
Kalshi markets rankingGETprediction-market/kalshi/ranking
Kalshi market detailGETprediction-market/kalshi/marketsmarket_ticker
Search Polymarket / KalshiGETsearch/polymarket / search/kalshi
Wallet profile (cross-chain)GETwallet/detailaddress
Wallet net-worth time seriesGETwallet/net-worthaddress
Wallet DeFi positionsGETwallet/protocolsaddress
Batch wallet labels (CEX/Whale/MEV…)GETwallet/labels/batchaddresses
Token tokenomics + unlocksGETtoken/tokenomics
Token holders top NGETtoken/holdersaddress, chain
Token transfersGETtoken/transfersaddress, chain
Token DEX tradesGETtoken/dex-tradesaddress
Social mindshare time seriesGETsocial/mindshareq, interval
Smart-follower historyGETsocial/smart-followers/history
Twitter user profileGETsocial/userhandle
Twitter user postsGETsocial/user/postshandle
Tweet repliesGETsocial/tweet/repliestweet_id
Web search (crypto-scoped)GETsearch/webq
News article searchGETsearch/newsq
KOL / CT people searchGETsearch/social/peopleq
Tweet full-text searchGETsearch/social/postsq
Project / token searchGETsearch/projectq
Wallet search (by ENS, label)GETsearch/walletq
VC fund portfolioGETfund/portfolio
VC fund rankingGETfund/rankingmetric
DeFi protocol rankingGETproject/defi/rankingmetric
Project full profileGETproject/detail
Clean a webpage to markdownGETweb/fetchurl
News feedGETnews/feed
Single news articleGETnews/detailid

Worked Examples

1. "What's BTC trading at?"

blockrun_surf({ path: "market/price", params: { symbol: "BTC" } })

Cost: $0.0085. Returns price history; latest point = current price.

2. "Top 10 tokens by DEX volume on Ethereum in the last 24h"

blockrun_surf({
  path: "onchain/sql",
  body: {
    sql: `
      SELECT token_address, sum(amount_usd) AS volume_usd
      FROM ethereum.dex_trades
      WHERE block_time > now() - INTERVAL 1 DAY
      GROUP BY token_address
      ORDER BY volume_usd DESC
      LIMIT 10
    `
  }
})

Cost: $0.0085. Raw ClickHouse — same query language Surf's own UI uses, at the same flat rate as any other Surf read.

3. "Is this whale wallet labeled? What does it hold?"

// Step 1 — labels (CEX / Whale / Bridge / MEV / Bot / Fund)
blockrun_surf({ path: "wallet/labels/batch", params: { addresses: "0xabc...,0xdef..." } })

// Step 2 — cross-chain holdings + DeFi positions
blockrun_surf({ path: "wallet/detail", params: { address: "0xabc..." } })
blockrun_surf({ path: "wallet/protocols", params: { address: "0xabc..." } })

// Step 3 — net-worth time series
blockrun_surf({ path: "wallet/net-worth", params: { address: "0xabc..." } })

Cost: 4 × $0.0085 = $0.034. Replaces a Nansen subscription for one-off lookups.

4. "What's the market saying about the 2028 election?"

// Compare Polymarket + Kalshi side by side
blockrun_surf({ path: "search/polymarket", params: { q: "2028 US president" } })
blockrun_surf({ path: "search/kalshi",     params: { q: "2028 US president" } })

// Then pull the order book on the leading market
blockrun_surf({ path: "prediction-market/polymarket/prices",
                params: { condition_id: "0x..." } })

5. "Where's mindshare moving for L1s?"

blockrun_surf({ path: "social/mindshare", params: { q: "solana", interval: "1d" } })
blockrun_surf({ path: "social/mindshare", params: { q: "monad",  interval: "1d" } })
blockrun_surf({ path: "social/ranking" })

6. "ETF flows + funding rate + long/short — give me the macro picture"

blockrun_surf({ path: "market/etf",                params: { symbol: "BTC" } })
blockrun_surf({ path: "market/fear-greed" })
blockrun_surf({ path: "exchange/funding-history",  params: { pair: "BTC-USDT" } })
blockrun_surf({ path: "exchange/long-short-ratio", params: { pair: "BTC-USDT" } })

Cost: 4 × $0.0085 = $0.034.

Method Routing — When to Use body

Pass body (POST) only for these three endpoints:

  • onchain/query — structured, typed predicates against ClickHouse
  • onchain/sql — raw SQL string in { sql: "..." }

Everything else is GET with params.

Python SDK (for non-MCP use)

from blockrun_llm import setup_agent_wallet

client = setup_agent_wallet()

# GET — same as blockrun_surf({ path, params })
price = client._get_with_payment_raw("/v1/surf/market/price", {"symbol": "BTC"})

# POST — same as blockrun_surf({ path, body })
result = client._request_with_payment_raw("/v1/surf/onchain/sql", {
    "sql": "SELECT count() FROM ethereum.transactions WHERE block_time > now() - INTERVAL 1 HOUR"
})

Full Endpoint Catalog (83 endpoints, 12 categories)

Exchange (CEX) — 7

exchange/markets · exchange/price · exchange/perp · exchange/depth · exchange/klines · exchange/funding-history · exchange/long-short-ratio

Fund (VC intelligence) — 3

fund/detail · fund/portfolio · fund/ranking

Market — 11

market/ranking · market/fear-greed · market/futures · market/price · market/etf · market/options · market/liquidation/exchange-list · market/liquidation/order · market/liquidation/chart · market/onchain-indicator · market/price-indicator

News — 2

news/feed · news/detail

On-chain — 7

onchain/bridge/ranking · onchain/yield/ranking · onchain/gas-price · onchain/tx · onchain/schema · onchain/query (POST) · onchain/sql (POST)

Prediction Markets — 17

Polymarket: prediction-market/polymarket/ranking · .../trades · .../markets · .../events · .../prices · .../volumes · .../open-interest · .../positions · .../activity · prediction-market/category-metrics Kalshi: prediction-market/kalshi/ranking · .../markets · .../events · .../prices · .../trades · .../volumes · .../open-interest

Project + DeFi — 3

project/detail · project/defi/metrics · project/defi/ranking

Search — 11

search/airdrop · search/events · search/kalshi · search/polymarket · search/web · search/project · search/news · search/wallet · search/fund · search/social/people · search/social/posts

Social — 11

social/detail · social/ranking · social/smart-followers/history · social/mindshare · social/tweets · social/tweet/replies · social/user · social/user/followers · social/user/following · social/user/posts · social/user/replies

Token — 4

token/tokenomics · token/dex-trades · token/holders · token/transfers

Wallet — 6

wallet/detail · wallet/history · wallet/net-worth · wallet/transfers · wallet/protocols · wallet/labels/batch

Web — 1

web/fetch

Gotchas

  • Required params: 56 of 83 endpoints require at least one param. The 402 response and the in-tool route surface which fields are missing. Missing params → 400 + no charge.
  • Solana wallet works too: blockrun_surf routes through whichever chain the BlockRun wallet is on (Base or Solana). Surf settlement always lands in Surf's Base treasury.
  • onchain/sql is powerful but unrestricted: there's no row limit on the server side. Add LIMIT to your query or you'll pay for a megabyte of JSON.
  • X-Payment-Receipt header lands on the response with the settlement tx hash — keep it for accounting.

Reference

Frequently asked questions

What to verify before installation and use

What does the surf source document cover?

Surf (asksurf.ai) aggregates 83 crypto data endpoints across CEX market data, on-chain SQL (13 chains, 80+ ClickHouse tables), 100M+ labeled wallets, prediction markets (Polymarket + Kalshi side-by-side), social/CT intelligence, news and unified search.

How do I install surf?

The source record exposes this install command: npx skills add https://github.com/BlockRunAI/blockrun-mcp --skill "skills/surf". Inspect the command and pinned source before running it.

Which permission-related actions were detected?

Static rules flagged network in the source; the page lists the matching lines and excerpts.

Alternatives

Compare before choosing

Computed 100152

JasonColapietro/suede-creator-skills

suede-ab-testing

Suede-owned experimentation discipline for hypotheses, sample sizing, test duration, significance, and repeatable experiment programs. Use when comparing variants, deciding whether a result is reliable, or building an experiment backlog and cadence. NOT FOR: analytics instrumentation (use suede-analytics), post-click conversion diagnosis (use suede-site-alchemy), or writing the variant copy itself (use suede-copy).

Computed 1008

narrative-io/narrative-skills-marketplace

design-analysis

Translate a fuzzy analytical question into a rigorous investigation plan. Interrogates the ask, grounds the plan in the available data dictionary, applies analytical best practices, and produces a structured brief of query specifications for a downstream query-writing skill. Plans, does not write SQL. Use when: "why did X drop", "is there a relationship between A and B", "who are our highest-value customers", "what's driving the change in Y", "investigate this trend", "design an analysis for", "

Computed 9834,322

K-Dense-AI/scientific-agent-skills

dask

Distributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.

Computed 9815

getcargohq/cargo-skills

cargo-orchestration

Make Cargo actually run something, or show what it would run — execute one connector action, run a multi-step workflow, trigger a batch across a whole segment or model, message an AI agent, build or edit a node graph, draw a workflow, tool or play as a diagram, and query the runtime tables (runs, batches, spans, records) with SQL. Triggers: "run this on all my contacts", "execute the action", "kick off a batch", "build a workflow", "schedule a play", "make it run every morning", "ask the agent",