You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.