Skip to content

v0.12.193 — Surf crypto-data API (skill-only)

Choose a tag to compare

@1bcMax 1bcMax released this 17 May 13:17
· 31 commits to main since this release
  • Surf integration — first skill-only marketplace API. BlockRun launched the Surf unified crypto data API (blockrun.ai/marketplace/surf) — 84 endpoints across 13 domains: CEX/DEX markets, on-chain SQL over 80+ ClickHouse tables (Ethereum, Base, Arbitrum, BSC, TRON, HyperEVM, Tempo), 100M+ labeled wallets, prediction markets (Polymarket + Kalshi), social/CT mindshare, news, project/DeFi metrics, token analytics, unified search, VC fund intelligence. Settles directly to Surf's Base treasury in USDC; no Surf account or API key required.
  • New release pattern: base whitelist + skill, no typed wrappers. Earlier integrations (Predexon, Phone/Voice) wrote 200–400 lines of TypeScript per partner in src/partners/registry.ts — hand-authored summaries of each endpoint exposed as blockrun_* tools. That pattern doesn't scale: Surf alone has 84 endpoints, and the next BlockRun-marketplace API will have more. From this release forward, new partner APIs ship as a skill (markdown the agent reads on demand) plus a one-line addition to the proxy namespace whitelist. The agent reads skills/<api>/SKILL.md, crafts the HTTP call, and gets paid x402 settlement transparently. Adding a new Surf endpoint requires zero ClawRouter release. This matches the Anthropic Skills convention (github.com/anthropics/skills) and aligns with how Claude Code is designed to consume capability surfaces.
  • Proxy whitelist. Extended the partner-route regex at src/proxy.ts to match /v1/surf/*. Requests flow through the existing proxyPaidApiRequest (x402 handled transparently). New isSurf branch in the telemetry hook emits tier: "SURF" with model = "surf/<operation>" so clawrouter stats and clawrouter report see Surf usage as a distinct line — distinct from LLM, generic Partner, and Phone tiers. Updated proxyPaidApiRequest JSDoc + the inline route comment to document the new namespace.
  • No registry entries — no blockrun_surf_* tools. Deliberate. The agent reads skills/surf/SKILL.md for the endpoint catalog and crafts calls to http://127.0.0.1:8402/v1/surf/... directly. Skip the duplication.
  • skills/surf/SKILL.md (new). Full endpoint reference grouped by domain (Exchange, Market Overview, News, On-Chain, Prediction Markets, Project + DeFi, Social/CT, Token Analytics, Unified Search, VC Fund, Wallet Intelligence, Web, Chat). Pricing tier table ($0.001 / $0.005 / $0.020). Four worked example flows (wallet ID, token concentration, custom on-chain SQL with schema-fetch pattern, project mindshare lookup). Frontmatter triggers cover the natural-language queries an agent would phrase to find this skill ("onchain sql query", "wallet labels api", "crypto mindshare", etc.).
  • skills/clawrouter/SKILL.md headline update — per the feedback_skill_dual_layer rule. Added "Crypto Data (Surf) — skill-only integration" section after Prediction Markets, explaining the new base+skill pattern and pointing at the dedicated surf skill. Frontmatter description and triggers extended to surface Surf capabilities. Without this headline update, agents reasoning about crypto-data tasks would skip ClawRouter even with the dedicated surf skill present.
  • README — new "Crypto Data (Surf)" section between Phone & Voice and Models & Pricing, with the pricing table, three curl examples (price, batch wallet labels, on-chain SQL), and a link to skills/surf/SKILL.md. Notes that this is the new pattern for marketplace APIs.
  • openclaw.plugin.json description — mentions Surf so the OpenClaw plugin browser surfaces the capability.
  • Tests — new src/proxy.surf-routing.test.ts mirrors the partner-path regex literal and adds 10 assertions: positive matches for /v1/surf/{market/price,onchain/sql,wallet/labels/batch,prediction-market/polymarket/markets,chat/completions}, negative guards against /v1/surfer/*, /v1/surfaces/*, and bare /v1/surf (no trailing slash), plus regression guards for existing partner paths (/v1/pm/*, /v1/exa/*, /v1/phone/*, /v1/voice/*, /v1/stocks/*) and non-partner /v1 routes (/v1/chat/completions, /v1/models, /v1/images/generations). Mirroring the regex literal here means any silent regex edit fails loudly in CI.
  • Aborted course-correction in the same session (process note worth recording): the first pass of this integration also added 11 typed blockrun_surf_* tools to src/partners/registry.ts (~470 lines) and generalized the __dynamic__ handler in src/partners/tools.ts. Reverted both before commit on user feedback — Surf doesn't belong in registry.ts, and generalizing the dynamic handler without a second user would have been speculative. Lesson: mirroring the Predexon/Phone pattern by reflex skips the question of whether the pattern itself still scales. With Surf at 84 endpoints, it doesn't. New rule: typed partner wrappers are reserved for narrow, high-leverage APIs (≤12 endpoints, agent-facing tools that benefit from JSON-schema validation in OpenClaw). Everything else is base + skill.