BlockRun MCP
OfficialBlockRun MCP is a pay-per-call server that gives LLMs real-time access to markets, AI models, media generation, on-chain data, and more — all billed in USDC with no separate API keys required.
Wallet & Budget Management — manage USDC wallets on Base and Solana, check balances, set spending caps, and delegate budgets to child agents for multi-agent orchestration.
Multi-Model AI Chat — query 55+ LLMs (GPT, Claude, Gemini, DeepSeek, GLM, NVIDIA free tier, etc.) with routing modes, vision/multimodal input, and extended thinking.
Image Generation & Editing — generate or edit images using GPT-Image, Google Nano-Banana (up to 4K), xAI Grok Imagine, CogView-4, and more; supports img2img, inpainting, and multi-image fusion.
Video Generation — create AI videos via Sora 2, xAI Grok Imagine Video, or ByteDance Seedance with text-to-video or image-to-video, audio, and RealFace person-specific video.
RealFace Enrollment — enroll a real person (via liveness check) or an AI character for personalized video generation.
Music Generation — produce full-length ~3-minute tracks (instrumental or with lyrics) via MiniMax Music.
Text-to-Speech & Sound Effects — ElevenLabs TTS with multiple voices and models, plus cinematic sound effects up to 22 seconds.
Real-Time Price Data — live and historical quotes for crypto, FX, commodities (free), and 12 global stock markets (paid) via Pyth.
Prediction Markets — query Polymarket, Kalshi, Limitless, and others for events, order books, candles, smart-money wallet analytics, and cross-platform market matching.
Surf Unified Crypto Data — 84 endpoints covering CEX data (16 exchanges), on-chain SQL (13 chains), 100M+ labeled wallets, social/CT intelligence, news, and AI chat with citations.
Neural Web Search — meaning-based search via Exa for papers, news, companies, and GitHub repos, plus URL content retrieval.
Live Web & Social Search — real-time web, X/Twitter, and news search with AI-summarized results and citations via Grok Live Search.
DEX Data — free real-time token prices, liquidity, volume, and pair discovery via DexScreener across all chains.
DeFi Fundamentals — protocol TVL, chain TVL, yield pools/APY, and token prices via DefiLlama.
Raw Blockchain RPC — execute JSON-RPC calls against 40+ chains (Ethereum, Base, Solana, Bitcoin, Sui, NEAR, and more).
Sandboxed Code Execution — run isolated code in disposable cloud containers with optional GPU (T4 to H100) via Modal.
Phone Intelligence & Voice Calls — carrier and fraud lookups, US/CA number provisioning, and outbound AI voice calls.
Model Catalog — discover all available LLM, image, video, and music models with live pricing.
Provides access to Binance Futures market data via the blockrun_markets tool.
Provides access to ByteDance's Seedance video generation models via the blockrun_video tool.
Provides on-chain SQL queries across 13 blockchains using ClickHouse tables via the blockrun_surf tool.
Provides access to free-tier NVIDIA LLMs via the blockrun_chat tool.
Provides access to OpenAI models (GPT and DALL-E) for text generation and image creation via blockrun_chat and blockrun_image tools.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@BlockRun MCPWhat's the current Polymarket probability for Bitcoin reaching $100k this year?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
claude mcp add blockrun -s user -- npx -y @blockrun/mcp@latestBlockRun MCP is an open-source Model Context Protocol server that gives Claude — and any MCP-compatible agent — 20 tools for real-time data and real actions: 71 LLMs, image & video generation, prediction-market data, live web/X search, on-chain queries across 40 chains, and the ability to place real, USDC-settled bets on Polymarket. Authentication is a wallet signature (no API keys); you pay per call in USDC via the x402 protocol (no credit cards, no subscriptions). One self-custody wallet on Base or Solana. MIT licensed.
🏆 First of its kind — the signal → trade loop in Claude Code
Read live Polymarket odds and place the bet, from one self-custody wallet, pay-per-call. Jump to Polymarket trading →
Related MCP server: @prism/mcp-server
Why BlockRun MCP exists
Every other data integration was built for human developers — create an account, copy an API key into .env, add a credit card, repeat for every vendor.
Agents can't do any of that. BlockRun MCP is built for the agent-first world:
One wallet, every source — 20 tools behind a single self-custody wallet. No per-vendor signups.
No API keys — your wallet signature is authentication.
No credit cards — pay per request in USDC via x402, fractions of a cent each.
Starts free — the free tier (
blockrun_chat mode:"free",blockrun_dex, cryptoblockrun_price,blockrun_models) costs $0.Reads and acts — most tools deliver data;
blockrun_polymarketplaces real, confirm-gated trades.Human-in-the-loop payments — turn on
BLOCKRUN_CONFIRM_SPEND=onand the agent pauses before any paid call above your threshold; nothing is signed until you approve. Details ↓Generative UI — on Claude Desktop, claude.ai, VS Code and Cursor the Polymarket preview is a live order card with a Place button, and the wallet is a panel with balances, QR and card top-up. MCP Apps ↓
Self-custody — your key never leaves your machine (
~/.blockrun/.session,0600— or the OS keychain once you opt intoBLOCKRUN_KEYCHAIN=strict). BlockRun can't move your funds.
How it compares
Raw provider APIs | Typical single-vendor MCP | BlockRun MCP | |
Setup | Account + API key per vendor | Account/key for 1 vendor | Wallet auto-created, no signup |
Payment | Credit card, monthly minimums | Credit card / vendor plan | USDC per-call via x402 |
Data sources | One per integration | One vendor | 20 tools — LLMs, media, markets, chain |
Place real bets | Build it yourself | Rare | Yes — Polymarket CLOB, confirm-gated |
Pay-chain | — | — | Base + Solana |
Agent budgets | Manual | — | Built-in per-agent delegation |
Spend approval | — | — | Ask-before-pay dialog (MCP elicitation) |
Generative UI | — | Rare | Order card + wallet panel (MCP Apps) |
Open source | Varies | Varies | Yes (MIT) |
✓ One wallet · ✓ Pay-per-call · ✓ Reads and trades · ✓ Multi-chain · ✓ Agent-ready · ✓ Open source
What changes
Before BlockRun, Claude can't answer:
"What's the current Polymarket probability that Bitcoin hits $100k this year?"
"Find me the top 5 papers on RAG published in the last 30 days."
"What are people saying about @sama on X right now?"
"What's the 24h volume on the PEPE/ETH pair on Uniswap?"
"Polymarket has the Fed holding at 73% — put $2 on it." ← and now it can place the trade, not just read the odds.
After BlockRun, it can. Each query costs fractions of a cent, billed from a local USDC wallet. No subscriptions. No API dashboards. No key rotation.
Quick Start
1. Install
Claude Code (recommended)
claude mcp add blockrun -s user -- npx -y @blockrun/mcp@latest-s user installs globally (available in every project). The -- separator ensures -y is passed to npx, not parsed by claude mcp add.
💡 Homebrew / nvm users: if the server doesn't connect, Claude Code likely can't find
node/npxon its launcher PATH. Pass your shell PATH through — works on CLI and desktop:claude mcp add blockrun -s user -e PATH="$PATH" -- npx -y @blockrun/mcp@latestSee Troubleshooting if it persists.
Every MCP client — one command or one JSON block. Verified = we ran the published package on that client and saw the tools listed (client version · date). Documented = install path from the client's own docs; not run by us yet — tell us if it works. The Spend dialog column is whether the client renders the human-in-the-loop payment prompt; on ❌ clients paid calls proceed without asking and BLOCKRUN_BUDGET_LIMIT is the guard.
Client | Status | Spend dialog | Install |
Claude Code | ✅ Verified · 2.1.251 · 2026-08-30 | ✅ |
|
Codex CLI | ✅ Verified · 0.142.5 · 2026-08-30 | ❌ |
|
OpenClaw | 🟡 In use · 2026.5.2 (from a local build; the | — not documented |
|
Claude Desktop | 📝 Documented | ⚠️ renders; OK reports cancel → proceeds |
|
Cursor | 📝 Documented | ✅ |
|
VS Code (Copilot) | 📝 Documented | ✅ |
|
Gemini CLI | 📝 Documented | ❌ |
|
Windsurf | 📝 Documented | ❌ |
|
Any other MCP client that can spawn a stdio server works the same way: command: npx, args: ["-y", "@blockrun/mcp@latest"]. With nvm/Homebrew Node on a JSON-configured client, put the absolute path from which npx in command. Spend-dialog sources and what "proceeds without asking" means: docs/spend-confirmation.md.
{
"mcpServers": {
"blockrun": { "command": "npx", "args": ["-y", "@blockrun/mcp@latest"] }
}
}Client | File |
Claude Desktop |
|
Cursor |
|
Windsurf |
|
Add "env": { "BLOCKRUN_CONFIRM_SPEND": "on" } inside the server object to turn on the spend dialog where the client supports it.
2. Choose a tool profile (optional)
Expose a trimmed tool set so the client loads fewer schemas into context. Pass --profile <name> (or set BLOCKRUN_MCP_PROFILE); omit for the full set.
Profile | Tools |
| everything (20 tools) |
|
|
|
|
|
|
|
|
claude mcp add blockrun-trading -s user -- npx -y @blockrun/mcp@latest --profile trading
# Codex CLI
codex mcp add blockrun-trading -- npx -y @blockrun/mcp@latest --profile tradingAn unknown profile name falls back to full. modal and phone are full-profile only.
What each profile costs your context
Installing an MCP server spends context on every turn, whether or not you call the tools — the client loads each tool's schema into the model's prompt and re-sends it for the whole session. Package managers have shown install size for decades. Almost no MCP server shows this. Ours:
Profile | Tools | Context |
| 20 | 12,900 |
| 9 | 5,554 |
| 7 | 5,436 |
| 6 | 3,024 |
| 3 | 1,924 |
Running --profile trading instead of the default costs 57% less context for the same trading
workflow. If you only ever ask about markets, that is the single cheapest change you can make.
Measure it yourself — against us, or against any other stdio MCP server:
npm i gpt-tokenizer
node scripts/measure-tool-schema.mjs # this server, every profile
node scripts/measure-tool-schema.mjs -- npx -y @some/other-mcp-serverIt counts the model-visible projection — {name, description, input_schema} per tool, with the
mcp__blockrun__ prefix the host prepends — because that is what lands in the API tools array.
It excludes annotations, _meta and outputSchema, which the host consumes and never forwards
to the model (a further ~3.7% on the wire).
The tokenizer is o200k_base. Claude's tokenizer is not public and runs a few percent higher on
JSON, so every figure here is a slight under-count, never an over-count.
Two caveats worth stating plainly. Tool schemas sit at the front of the prompt and are covered by prompt caching, so after the first turn they re-send at cache-read rates — the context-window cost is 100% every turn, the dollar cost is roughly a tenth of that. And 54% of our own cost is tool descriptions, not schemas, which is where the remaining work is.
3. Fund your wallet
Run blockrun_wallet to see your address. The server pays on Base by default — send USDC on Base (Coinbase → USDC → Base network → paste address, or bridge via bridge.base.org).
$5 covers ~525 market queries · ~500 Exa searches · ~250 image generations · ~14 Seedance 1.5-pro clips.
Prefer Solana? See Fund your wallet — two tool calls, no restart.
4. Ask Claude anything
"What's Polymarket saying about the next Fed decision? If 'hold' is above 70%, put $2 on it."
Claude reads the odds with blockrun_markets and — with your confirmation — places the trade with blockrun_polymarket. One wallet. Gasless. Confirm-gated.
5. Install the agent skills (optional)
The package ships 16 skills — which tool answers what, worked examples, and a setup / debug / upgrade trio so the agent can install, troubleshoot and update the server on its own.
/plugin marketplace add BlockRunAI/blockrun-mcp # Claude Code
npx -y @blockrun/mcp@latest skills install # any project → ./.claude/skills
npx -y @blockrun/mcp@latest skills install --global # ~/.claude/skills
npx -y @blockrun/mcp@latest skills install --to ~/.codex/skillsskills list shows what ships; --only a,b picks; --force refreshes copies after an upgrade.
Demo
User: What's Polymarket saying about the Fed rate decision next month?
Claude: According to Polymarket, the market puts a 73% probability on the Fed holding rates steady, 24% on a 25bp cut, 3% on a hike. 24h volume: $2.1M. The "Hold" contract last traded at $0.73.
(via
blockrun_markets· cost: $0.0095)
User: Polymarket has Hawley at ~13% to announce a 2026 presidential run — put $1 on Yes.
Claude: Done — bought 7.63 shares of Yes at $0.131 ($1.00, market FOK). Real on-chain order, settled in pUSD from your gasless Polymarket deposit wallet; I'm tracking the position now.
(signal via
blockrun_markets, trade viablockrun_polymarket— one self-custody wallet, gasless · on-chain tx0x7ca8…)
Tools
Tool | Data source | Cost |
| 71 LLMs (GPT, Claude, Gemini, DeepSeek, Kimi K3, GLM, NVIDIA free tier, …) with | per token |
| Generate: openai/gpt-image-2, gpt-image-1, google/nano-banana(-2/-pro), xai/grok-imagine-image(-pro), zai/cogview-4, bytedance/seedream-5-pro. Edit: img2img, inpaint, fusion. | $0.015–0.15 |
| Sora 2 + xAI Grok Imagine Video + ByteDance Seedance 1.5/2.0-mini/2.0-fast/2.0/2.5 (720p + audio; 4K on 2.0, up to 30s on 2.5); RealFace asset → real-person video | $0.053–0.32/sec charged |
| Enroll a real person (phone liveness) or AI character (Virtual Portrait) as a | free; $0.01 to enroll |
| MiniMax music generation | per track |
| ElevenLabs TTS (Flash/Turbo/Multilingual/v3, 8 voices) + ByteDance Seed Audio (prompt-directed) + cinematic sound effects; free voice listing | $0.05–0.10/1k chars |
| Pyth-backed realtime + OHLC — crypto / FX / commodity (free), 12 stock markets (paid) | free or $0.001/call |
| Polymarket (markets, candles, trades, orderbooks, leaderboards, smart-wallet PnL/clusters, UMA oracle), Kalshi, Limitless, Opinion, Predict.Fun, dFlow, Binance Futures, cross-platform search | $0.0095/query |
| Read-only Polymarket positions/open orders plus executable live order previews, separated for MCP clients that enforce tool safety annotations | free |
| Trade on Polymarket (CLOB V2): place/cancel real bets, positions, redeem winnings — signed locally, settled in pUSD from a gasless deposit wallet. Confirm-gated, $25/order default cap. Details ↓ | free tool; bets are your funds |
| Surf (asksurf.ai) — 83 endpoints: CEX data, on-chain SQL (13 chains, 80+ tables), 100M+ labeled wallets, Polymarket + Kalshi, social mindshare, news, Surf-1.5 chat with citations | $0.0095/call |
| Neural web search (Exa) — research, competitors, papers, URL content | $0.01/query |
| Grok Live Search — web + X/Twitter + news with citations | $0.025 × max_results |
| Live DEX prices via DexScreener | free |
| Raw JSON-RPC on 40 chains (Ethereum, Base, Solana, Bitcoin, Sui, NEAR, …) via Tatum | $0.002/call |
| DefiLlama — protocol TVL, chain TVL, yield pools (APY), token prices | $0.001–0.005/call |
| Isolated code execution in a BlockRun-hosted Modal sandbox — disposable container, optional GPU (T4 → H100) | $0.01 create; $0.001/op |
| Outbound AI voice calls (Bland) + wallet-owned US/CA numbers (Twilio), carrier + fraud lookups | $0.54/call; $5/number |
| Live catalogue of every LLM/image/video/music model + pricing | free |
| Balance, spending, agent budgets, setup QR, chain switch | free |
Key use cases
Prediction-market consensus → "Polymarket's odds for the next Fed decision?" —
blockrun_marketsSignal → trade (the full loop, self-custody) → "If 'hold' is under 30%, put $2 on Yes." —
blockrun_marketsreads,blockrun_polymarket action:"buy"places. Gasless, confirm-gated.On-chain forensics → "This wallet — what's it labeled, what does it hold, when did it whale up?" —
blockrun_surfCited research → "5 most-cited papers on speculative decoding, last 90 days." —
blockrun_exaImage generation with on-image text → "Poster announcing GPT-5.5, retro-futuristic, headline 'NOW LIVE'." —
blockrun_imageGive your agent a voice → "Speak this with the sarah voice." —
blockrun_speechVoice phone-out → "Call +1-415-… and confirm Friday at 3pm." —
blockrun_phoneMulti-agent research, capped → "Spawn 3 agents on competing L1 narratives. Cap each at $0.50." —
blockrun_wallet delegate × 3Cross-chain SQL → "Top 10 tokens by DEX volume on Base, last 24h." —
blockrun_surfonchain/sql
📈 Polymarket trading
blockrun_polymarket lets an agent place real bets on Polymarket (CLOB V2, Polygon). It is non-custodial: every order and approval is EIP-712-signed locally by your BlockRun wallet key — the same self-custody key that pays x402 API fees on Base also authorizes bets on Polygon. Neither BlockRun nor Polymarket's relayer can move funds; they only forward payloads you signed.
Architecture — the official "deposit wallet" path (signature type POLY_1271): a smart-contract vault on Polygon, CREATE2-derived from your key (only your key can authorize it), holds betting funds in pUSD (Polymarket's 1:1 collateral wrapper). Deployment, approvals, and redemptions all run gasless through Polymarket's relayer — you never need POL.
📖 Full step-by-step guide: docs/polymarket-trading-setup.md
# 1. Provision your deposit wallet (idempotent, gasless)
blockrun_polymarket action:"setup"
# 2. Fund it from your Base USDC in one call (gasless; $0.01 fee, non-custodial)
blockrun_polymarket action:"fund" amount_usd:5 confirm:true
# 3. Sign the one-time gasless approval batch
blockrun_polymarket action:"setup" confirm:true
# 4. Find a market, preview safely, then place only after exact user approval
blockrun_polymarket_read action:"preview" side:"buy" token_id:"<id>" amount_usd:5 order_type:"FOK"
blockrun_polymarket action:"buy" token_id:"<id>" amount_usd:5 order_type:"FOK" confirm:true
# 5. Manage → positions · orders · cancel · sell · redeem · withdrawSafety rails (server-side; an agent cannot bypass them): confirm:true required for every order/approval/redeem, POLYMARKET_MAX_BET_USD per-order cap (default $25), optional POLYMARKET_MAX_SESSION_USD session cap, and bets never draw from the x402 API budget.
Regions: Polymarket geoblocks order placement by IP (US/UK + many regions). Handled by default — the MCP routes CLOB traffic through BlockRun's hosted Finland egress (a fully unrestricted region under Polymarket's policy), so trading works out of the box; setup reports your status. Override POLYMARKET_CLOB_HOST to go direct or run your own egress, optionally reached via HTTPS_PROXY / POLYMARKET_CLOB_PROXY (a proxy alone doesn't change the Polymarket-facing egress). Complying with Polymarket's terms for your jurisdiction is your responsibility.
⚠️ Back up your signer key (
~/.blockrun/.sessionby default; aBLOCKRUN_WALLET_KEYenv var or an existing agentwallet.jsontakes precedence —setupprints the actual signer address). It is the only key to both the payment wallet and the Polymarket deposit wallet.
🛡️ Human-in-the-loop payments
Turn on BLOCKRUN_CONFIRM_SPEND=on and every paid tool pauses before it signs. The server sends an MCP elicitation; your client renders it as a dialog with the estimated charge:
💸 BlockRun charge — video · bytedance/seedance-2.5 · 10s
Estimated: $2.6500
Approve this spend? (USDC is debited per call.)
To stop the charge, choose Decline — Cancel/ESC lets it proceed.
[ ] Approve all BlockRun charges for the rest of this session (don't ask again)
[ Decline ] [ Approve ]Decline → nothing is sent, nothing is charged, the tool reports "Charge declined". Approve → the call proceeds. Tick the box and you're not asked again for the session. Free calls never prompt. Set BLOCKRUN_CONFIRM_THRESHOLD=0.05 to only be asked above $0.05.
claude mcp add blockrun -s user -e BLOCKRUN_CONFIRM_SPEND=on -e BLOCKRUN_CONFIRM_THRESHOLD=0.05 -- npx -y @blockrun/mcp@latestClient | Dialog | Client | Dialog | |
Claude Code | ✅ | Claude Desktop | ⚠️ renders; OK reports cancel → proceeds | |
Cursor | ✅ | Windsurf | ❌ proceeds without asking | |
VS Code Copilot | ✅ | Codex CLI · Gemini CLI | ❌ proceeds without asking |
On a client that can't ask, the gate fails open — the call proceeds and the cost footer reports the charge. The hard stop on every client is the budget: BLOCKRUN_BUDGET_LIMIT for the process, blockrun_wallet action:"delegate" per sub-agent. blockrun_polymarket keeps its own, stronger per-order confirm:true.
📖 When to use it, sources for the matrix, limitations: docs/spend-confirmation.md
🧩 MCP Apps — order card & wallet panel
On hosts that support the MCP Apps extension — Claude Desktop, claude.ai, VS Code, Cursor, ChatGPT — two tools render as interactive cards instead of text. Everywhere else (Claude Code, Codex, terminals) nothing changes.
Order card on
blockrun_polymarket_read action:"preview"— question, outcome, side, best quote, est. shares, notional, cap meter, session ledger. Edit the amount → Re-quote. Place order is arm-then-confirm and asks the host to callblockrun_polymarket … confirm:true, so the host's consent prompt and every server cap (POLYMARKET_MAX_BET_USD, session cap) still apply.Wallet panel on
blockrun_wallet— both chains' balances, switch chain, copy address, EIP-681 / Solana Pay QR, explorer, Buy USDC with card.
📖 Hosts, money path, local testing: docs/mcp-apps.md
Fund your wallet
Run blockrun_wallet to see your address. The server pays on Base by default.
Method | Steps |
Coinbase | Send → USDC → Base network → paste address |
Bridge from Ethereum |
$5 covers ~525 market queries, ~500 Exa searches, ~250 image generations, or ~14 Seedance 1.5-pro clips (5s @ 720p+audio, ~$0.35 each).
Pay on Solana
Two tool calls — no env vars, no file editing, no restart:
blockrun_wallet action:"chain" chain:"solana" # provisions + activates the Solana wallet
blockrun_wallet action:"setup" # shows the Solana address + funding QRThen send USDC (SPL) on the Solana network — from Coinbase (pick "Solana"), Phantom, Solflare, or Backpack. Switch back with blockrun_wallet action:"chain" chain:"base". The server keeps both wallets; switching just changes which one pays.
Base-only — these fall back to Base regardless of active chain: blockrun_music, blockrun_speech, blockrun_modal, blockrun_defi, paid blockrun_realface, paid stock blockrun_price, and native Anthropic (claude-*) passthrough. In Solana mode they return a "switch to Base" message instead of charging. blockrun_image and blockrun_video pay on either chain.
For agents & LLMs
If you are an LLM invoking BlockRun MCP tools, read these first:
CRITICAL: On any payment / balance / 402 error, call
blockrun_walletfirst to check status, thenaction:"setup"for funding. Don't retry the failing tool blindly — the wallet is empty.CRITICAL:
blockrun_polymarketmoves REAL user funds (pUSD on Polygon), separate from the x402 API budget. Neverbuy/sell/redeemwithconfirm:trueunless the user explicitly approved that exact trade; withoutconfirmyou get a safe dry-run. Discover markets/token IDs withblockrun_marketsfirst.CRITICAL:
blockrun_surf's 84-endpoint catalog is inskills/surf/SKILL.md;blockrun_markets' full endpoint list is in its tool description (worked examples inskills/prediction-markets/SKILL.md; live-demo workflow inskills/signal-to-trade-demo/SKILL.md). Browse those before guessing paths.CRITICAL:
blockrun_musicandblockrun_videoare payment-on-completion async. Failures / client timeouts do NOT charge. Don't retry-loop — they may take 60–180s.CRITICAL: Before spawning child agents, allocate per-agent budget:
blockrun_wallet action:"delegate" agent_id:"X" agent_limit:1.00, then passagent_id:"X"to every downstream call. The child is auto-blocked at zero.Free tier first for drafts:
blockrun_chat mode:"free"(NVIDIA),blockrun_dex,blockrun_price(crypto/FX/commodity), andblockrun_modelsare $0.A declined spend confirmation is the user's decision. Report it and stop — never re-issue the call with a cheaper model, smaller parameters, or split requests to get under their threshold.
Showcase
Posters generated through blockrun_image with openai/gpt-image-2 — each a single API call routed through BlockRun, paid in USDC on Base.
Cornell Blockchain Conference 2026 | Cornell Blockchain Conference 2026 | 100 Trillion Tokens milestone |
Prompts and a worked example are in skills/image-prompting/SKILL.md.
Why not just use the APIs directly?
Direct APIs | BlockRun | |
Exa | Sign up, $20/mo minimum | $0.01/call, no subscription |
Polymarket | Undocumented, rate-limited | $0.0095/call, clean JSON — plus you can trade |
Surf (asksurf.ai) | Account + monthly plan | $0.0095/call, no account, 83 endpoints |
Multiple sources | 3 accounts, 3 API keys, 3 billing pages | 1 wallet |
One wallet. All sources. No dashboards.
Configuration
Variable / File | Default | Effect |
| auto-created on first run | EVM private key (0x…). File exists → use Base. Also the Polymarket signer (unless |
| unset | Env override of the EVM key — takes precedence over |
| unset | Explicit chain preference: |
| written on first run | Automatic pin: the chain you were already on when your second wallet was provisioned. Keeps a Base user on Base once a Solana session exists, and is outranked by |
| not created | Solana private key. File exists → Solana unless |
| unset | Env override of |
|
| Key storage. |
|
| Tool profile ( |
| unset (unlimited) | Hard USD cap on x402 spend for this server process. In-memory; resets on restart. Per-agent caps via |
| off |
|
|
| Only ask for calls estimated above this many USD. Malformed values fall back to |
| BlockRun Finland relay | Geoblock egress for order placement — defaulted for you. Override to go direct ( |
|
| Hard per-order notional cap. |
| unset | Optional cumulative per-process betting cap. |
|
|
|
| unset | HTTPS proxy for Polymarket CLOB traffic only. |
| unset (unlimited) | Bound pUSD exchange allowances to this many dollars. |
| unset | Optional Polymarket builder attribution code carried on orders. |
Chain selection priority (src/utils/wallet.ts): .chain preference → SOLANA_WALLET_KEY → .chain-auto pin → .solana-session exists → otherwise Base.
The server runs a non-blocking npm registry check at startup and prints an Update available notice to stderr when a newer @blockrun/mcp exists — re-run the install command to upgrade.
Troubleshooting
🤖 Hand this to the agent: the
blockrun-debugskill carries every row below as symptom → cause → fix, plus the diagnostics it can run itself.blockrun-setupandblockrun-upgradecover the other two halves. Install:npx -y @blockrun/mcp@latest skills install.
Insufficient balance/ HTTP 402 after retry → Runblockrun_wallet action:"setup", send USDC on Base (or Solana).blockrundoesn't connect / "MCP server failed" /spawn npx ENOENT→ Almost always a PATH issue: Claude Code can't findnode/npxon its launcher PATH (common with Homebrew / nvm, on CLI and desktop). Fix by passing your shell PATH at install:claude mcp remove blockrun -s user claude mcp add blockrun -s user -e PATH="$PATH" -- npx -y @blockrun/mcp@latestThen restart Claude Code. Or pin absolute paths (
which npx).claude mcp listdoesn't showblockrun→ Checknode -v(≥20.19). Clear the npx cache:rm -rf ~/.npm/_npx. Re-run the install.fetch failed/ balance-check timeout → Base RPC transient outage. The tool falls through 3 public RPCs; retry after 30s. Persistent = local proxy / firewall blocking outbound RPC.Video/Music generation timed out→ Upstream queue congestion. No charge (payment-on-completion). Retry, or pick a faster model.No spend-confirmation dialog although
BLOCKRUN_CONFIRM_SPEND=on→ Your client doesn't support MCP elicitation (Windsurf, Codex, Gemini CLI); the server proceeds without asking by design. UseBLOCKRUN_BUDGET_LIMITas the guard, or a client from the support table.Polymarket: neg-risk ("winner") market buy fails, or
redeemreverts, though setup shows ready → Re-runaction:"setup" confirm:trueonce (grants the on-chain approvals a pre-upgrade deposit wallet may lack — including the collateral-adapter approvalsredeemneeds). See the setup guide.
FAQ
What is BlockRun MCP? An open-source MCP server that gives Claude and other agents 20 tools for real-time data and real actions (trading, media, on-chain), paid per call in USDC. No accounts, no API keys.
Do I need API keys or accounts? No. A wallet is auto-created locally on first run; you fund it with USDC. No signups, no dashboards, no key rotation.
How much does it cost?
Pay-per-call — fractions of a cent to a few cents. The free tier (blockrun_chat mode:"free", blockrun_dex, crypto blockrun_price, blockrun_models) is $0. $5 of USDC covers thousands of queries.
Is it safe / non-custodial?
Yes. Your private key never leaves your machine (~/.blockrun/.session by default, 0600). x402 payments and Polymarket orders are signed locally — BlockRun forwards signed payloads and cannot move your funds.
Which clients work? Any MCP client that can spawn a stdio server. Verified on Claude Code and Codex CLI, in daily use on OpenClaw; install paths documented for Claude Desktop, Cursor, VS Code, Gemini CLI and Windsurf — see the client table. The spend-confirmation dialog additionally needs MCP elicitation (Claude Code, Cursor, VS Code).
Does it have a UI? On MCP-Apps hosts (Claude Desktop, claude.ai, VS Code, Cursor) the Polymarket preview is a live order card and the wallet is a panel — see MCP Apps ↑. Terminal clients get the same information as text.
Can I make the agent ask before it spends?
Yes — BLOCKRUN_CONFIRM_SPEND=on. Every paid tool pauses with the estimated charge and nothing is signed until you approve. Human-in-the-loop payments ↑
Can it really place real bets?
Yes. blockrun_polymarket places real, USDC-settled orders on Polymarket's CLOB — confirm-gated and capped. Read the odds with blockrun_markets, place with blockrun_polymarket.
Base or Solana?
Both. Switch instantly with blockrun_wallet action:"chain". A few media/paid tools settle on Base only (noted above).
From the BlockRun ecosystem
BlockRun is agent-native AI infrastructure — one wallet, x402 USDC micropayments, across every surface:
⚡ ClawRouter — the agent-native LLM router for OpenClaw. 71 models, <1ms local routing, USDC on Base & Solana.
🤖 BRCC — BlockRun for Claude Code: smart routing + x402 payments, purpose-built for Claude Code.
🐍 ClawRouter-Hermes — Python plugin wiring NousResearch Hermes into the ClawRouter proxy.
📚 Docs · Models & pricing — full SDKs, APIs, and the model catalogue.
Support & community
💬 Community Telegram | |
🐦 X / Twitter | |
📖 Documentation | |
🐛 Issues |
Contributing
PRs welcome. See CONTRIBUTING.md for setup, the tool-vs-skill design rule, and how to add a new partner API.
MIT License · blockrun.ai — Agent-native AI infrastructure
Website · npm · Docs · @BlockRunAI
Available Tools
20 toolsblockrun_chatA
Get a second opinion from another AI model, or use a specialized model for a specific task.
Notable modes:
mode:"powerful" → Claude Opus 5, Claude Opus 4.8, GPT-5.6-sol, Claude Fable 5 (frontier, 1M context)
mode:"reasoning" → Claude Opus 5, GPT-5.6-sol, Kimi K3, Grok 4.3, deepseek-v4-pro
mode:"coding" → Claude Opus 5, GPT-5.3-codex, Kimi K3, Grok Build, GLM-5.2
mode:"cheap" → deepseek-v4-pro, Qwen3.7 Flash, MiniMax M3, Tencent Hy3
mode:"glm" → Zhipu GLM-5 / 5.2 / 5.1 / 5-Turbo (strong at coding)
mode:"free" → NVIDIA models (no cost)
Pick directly: model:"anthropic/claude-opus-5", model:"moonshot/kimi-k3", model:"openai/gpt-5.6-sol", model:"xai/grok-4.5", model:"nvidia/gpt-oss-120b" (free).
Run blockrun_models to see all available models with pricing.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Routing mode: powerful/reasoning = frontier models (Opus 5, GPT-5.6-sol, Kimi K3), coding = code-specialized, glm = Zhipu GLM (great for coding), cheap = budget models, free = NVIDIA only (ignored if model specified) | |
| stop | No | Up to 4 stop sequences; generation halts when any is produced | |
| model | No | Specific model ID (e.g., 'moonshot/kimi-k3', 'openai/gpt-5.6-sol', 'zai/glm-5') | |
| system | No | Optional system prompt | |
| message | Yes | Your message to the AI | |
| agent_id | No | Agent identifier. If a budget was delegated for this agent_id via blockrun_wallet action:'delegate', spending is tracked and enforced. The agent is hard-stopped when its budget is exhausted. | |
| messages | No | Conversation history for multi-turn context. When provided, 'message' is appended as the final user turn. Use with explicit 'model' param (defaults to 'openai/gpt-5.6-terra' if not specified). Note: if you include a role:'system' entry in messages[], do not also pass the system param to avoid duplicate system messages. | |
| thinking | No | Anthropic extended thinking. Only honored for anthropic/claude-* models — these go direct to the native /v1/messages endpoint and the response includes verbatim type:'thinking' blocks with their original signature. Ignored for non-Claude models (no native thinking channel). | |
| max_tokens | No | Max tokens in response | |
| temperature | No | Creativity 0-2 | |
| response_format | No | Set to 'json_object' to force valid JSON output (no markdown fences). Works across all providers. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (readOnlyHint=false, destructiveHint=false), so the description carries some burden. It adds meaningful behavioral context: mode-to-model mappings, the '1M context' claim for frontier models, and the cost implication via 'free' (no cost) plus the pointer to pricing. It does not disclose output format, rate limits, or that this is a live paid API call, but it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, followed by a scannable bulleted mode list, then direct model picks, then a single pointer to the sibling for pricing. Every sentence earns its place; there is no filler or repetition. The length is justified by the routing information it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool (11 parameters, nested messages/thinking objects) with no output schema, so the description should explain return values and edge conditions. It covers model routing well but does not describe what the response looks like (e.g., text vs. thinking blocks) or explicitly route non-text tasks to media siblings. The schema's 100% parameter coverage compensates for some gaps, but the lack of output guidance leaves the definition incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds significant value by mapping the 'mode' parameter to concrete model pools and listing valid 'model' IDs like 'anthropic/claude-opus-5' and 'moonshot/kimi-k3'. These examples and mode→model mappings go beyond the schema's brief descriptions. Other parameters (stop, temperature, thinking) are already well-covered by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get a second opinion from another AI model, or use a specialized model for a specific task.' This clearly identifies the tool as the LLM text-generation/chat member of the blockrun family, distinguishing it from the image, music, video, wallet, and search siblings. The mode list further pins down the scope without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit routing guidance by mapping modes to use cases (powerful/reasoning for frontier models, coding for code-specialized, cheap for budget, free for no-cost) and tells the agent to 'Run blockrun_models to see all available models with pricing,' naming the sibling for model discovery. It does not explicitly state when not to use this tool versus media-generation siblings, but the mode guidance and context make the intended usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_defiARead-only
DeFi fundamentals via DefiLlama — protocol TVL, chain TVL, yield pools (APY), token prices. Pays per call in USDC, no API key.
Paths (GET only):
protocols ($0.007 charged) — all DeFi protocols ranked by TVL
protocol/{slug} ($0.007 charged) — one protocol's TVL history + chain breakdown, e.g. protocol/aave-v3
chains ($0.007 charged) — TVL by chain
yields ($0.007 charged) — yield pools with APY + TVL (large; filter client-side)
prices/{coins} ($0.003 charged) — token prices, coins like 'base:0x833589...,coingecko:ethereum'
Examples: blockrun_defi({ path: "protocol/uniswap-v3" }) blockrun_defi({ path: "prices/coingecko:bitcoin,coingecko:ethereum" }) blockrun_defi({ path: "chains" })
Use blockrun_price (free) for plain spot quotes, blockrun_dex (free) for DEX pairs, blockrun_surf for labeled on-chain data — this tool is for protocol/TVL/yield fundamentals.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Endpoint under /v1/defillama/, e.g. 'protocols', 'protocol/aave-v3', 'chains', 'yields', 'prices/coingecko:ethereum' | |
| agent_id | No | Agent identifier for budget tracking and enforcement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description adds meaningful behavioral detail: GET-only requests, per-path pricing in USDC, no API key required, and the caveat that the yields response is large and should be filtered client-side. It also discloses the external data source (DefiLlama). These details materially change how an agent budgets and handles responses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and cost, then uses a scannable bullet list for the endpoints, followed by concrete examples and sibling routing. Every section contributes either to choosing the tool or calling it correctly; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-endpoint read tool with no output schema, the description is unusually complete: it lists all endpoints, their costs, example paths, response characteristics ('TVL history + chain breakdown', 'yields with APY + TVL'), and call-size caveats. It also names alternatives so the agent can decide when not to use it. Nothing essential for selection or invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents path and agent_id with examples, so coverage is 100%. The description goes further by explaining endpoint syntax variants like protocol/{slug} and prices/{coins}, giving the coin identifier format ('base:0x833589...,coingecko:ethereum'), and noting per-path costs. This gives the agent enough context to construct valid path values beyond what the schema lists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens by specifying exactly what the tool does: 'DeFi fundamentals via DefiLlama — protocol TVL, chain TVL, yield pools (APY), token prices.' It then enumerates the five concrete GET paths and gives representative examples. It also names the sibling tools it is not, making distinction immediate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly routes usage: 'Use blockrun_price (free) for plain spot quotes, blockrun_dex (free) for DEX pairs, blockrun_surf for labeled on-chain data — this tool is for protocol/TVL/yield fundamentals.' This is a clear when-to-use vs when-not-to-use instruction, reinforced by exact path examples for each call shape.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_dexARead-only
Get real-time DEX data from DexScreener. FREE - no payment required.
Use for:
Token prices and liquidity across chains
Trading volume and price changes
Finding token pairs and contracts
Examples: blockrun_dex({ query: "SOL" }) -> Search for SOL pairs blockrun_dex({ token: "So11...xxx" }) -> Get specific token data blockrun_dex({ symbol: "PEPE" }) -> Search by symbol
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Filter by chain (ethereum, solana, base, etc.) | |
| query | No | Search query (token name, symbol, or address) | |
| token | No | Token address for direct lookup | |
| symbol | No | Token symbol to search |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive, so the description does not need to cover safety. It adds useful context about being real-time and free, but does not disclose response format, pagination, rate limits, or external API dependencies. This is acceptable given the annotations but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with a purpose statement, bulleted use cases, and examples that are easy to parse. The 'FREE - no payment required' line is somewhat extraneous but does not hurt, and the examples justify their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple read-only nature, optional parameters, and full schema coverage, the description covers the main usage scenarios and gives enough example invocations for an agent to call the tool. It lacks output-shape guidance, but that is less critical for a data query tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents chain, query, token, and symbol. The examples add small usage clarity but mostly restate what the schema already says, so the description adds little semantic value beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets real-time DEX data from DexScreener and lists specific use cases like token prices, liquidity, volume, and finding pairs. It does not explicitly contrast with siblings like blockrun_defi or blockrun_price, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Use for' section gives concrete contexts for when the tool applies, and the examples show typical invocation patterns. It does not explicitly say when not to use it or name alternative sibling tools, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_exaARead-only
Neural web search via Exa — understands meaning, not just keywords. Great for research.
Common paths (all POST, body shapes documented in the exa-research skill):
search — body: { query, numResults?, category?, includeDomains?, excludeDomains? } ($0.012/call charged)
answer — body: { query } ($0.012/call charged)
contents — body: { urls: [...] } ($0.002/URL + $0.002 fee, up to 100)
find-similar — body: { url, numResults? } ($0.012/call charged)
Categories for search: "news", "research paper", "company", "tweet", "github", "pdf".
Full request/response shapes + worked research workflows in the exa-research skill.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body for the call. Sent as POST. Required for all four endpoints. | |
| path | Yes | Endpoint name under /v1/exa/, e.g. 'search', 'answer', 'contents', 'find-similar' | |
| agent_id | No | Agent identifier for budget tracking and enforcement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as readOnly, openWorld, and non-destructive, so the description only needs to add extra context. It adds useful behavioral detail: all calls are POST, each endpoint has specific pricing, contents is capped at 100 URLs, and search categories are listed. It does not cover errors or rate limits, but the annotation coverage lowers that burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the value proposition and then uses a compact, scannable bullet list for endpoints and body shapes. It is longer than a single-purpose tool description, but the multi-endpoint surface justifies the length; the 'documented in skill' note is slightly redundant with the inline shapes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-endpoint tool with no output schema, it covers request bodies, path choices, categories, and pricing, and points to the exa-research skill for full response shapes and workflows. The main gap is that response semantics are deferred to an external skill rather than summarized inline.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though every schema property has a description, the tool description adds substantial value beyond the schema by listing the four valid path values, the exact body shape for each, optional fields such as numResults and includeDomains, accepted categories, and pricing. An agent can construct a correct request without needing to open the external skill.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies Exa as the resource and names the core capability ('Neural web search... understands meaning'), then enumerates four concrete endpoint paths. It stops short of explicitly differentiating itself from sibling tools like blockrun_search beyond the 'not just keywords' hint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Great for research' provides a clear context for when this tool is appropriate, and the endpoint/pricing breakdown helps an agent choose the right path. However, it does not explicitly state when to prefer blockrun_exa over sibling search tools or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_imageA
Generate or edit images via BlockRun. Pays with USDC on the ACTIVE chain — Base or Solana (see blockrun_wallet) — no separate API keys needed.
Actions:
generate (default): Create image from text prompt
edit: Transform an existing image using img2img
Generation models (1024x1024 base price; larger sizes cost more on gpt-image-*):
openai/gpt-image-2 ($0.06–0.12) — flagship, reasoning-driven, multilingual on-image text + character consistency (default)
openai/gpt-image-1 ($0.02–0.04) — GPT native image generation
google/nano-banana ($0.05) — Gemini-family image model
google/nano-banana-2 ($0.09) — Gemini 3.1 Flash, pro-level quality at Flash speed (1024x1024 only)
google/nano-banana-pro ($0.10; $0.15 at 4096px) — up to 4K, strongest photorealism
xai/grok-imagine-image ($0.02) — stylized, fast
xai/grok-imagine-image-pro ($0.07) — higher quality Grok Imagine
zai/cogview-4 ($0.015) — cheapest, photorealistic detailed scenes
bytedance/seedream-5-pro ($0.045; $0.09 when both dimensions exceed 1024) — Seedream 5.0 Pro; cheap widescreen at 1280x720 / 2048x1024, large formats up to 2848x1600
Edit (img2img) models: openai/gpt-image-2 (default), openai/gpt-image-1, google/nano-banana, google/nano-banana-2, google/nano-banana-pro Multi-image edit: pass an array of 2–4 source images to "image" to fuse them in one render (openai/* up to 4, google/* up to 3) — e.g. a subject plus a sprite layout guide, or a reference plus a brand logo. Source images and masks accept a base64 data URI, an http(s) URL, or a local file path (auto-encoded). Inpaint mask (openai/gpt-image-* only) via "mask"; not combinable with multiple source images.
| Name | Required | Description | Default |
|---|---|---|---|
| mask | No | Inpaint mask for edit action (openai/gpt-image-* only): a base64 data URI, http(s) URL, or local file path. Transparent areas of the mask are regenerated. Cannot be combined with multiple source images. | |
| size | No | Image size. Common values: 1024x1024 (all models), 1536x1024 / 1024x1536 (gpt-image-*), 2048x2048 / 4096x4096 (nano-banana-pro), 1280x720 / 2048x1024 / 2048x2048 / 2848x1600 (seedream-5-pro) | 1024x1024 |
| image | No | Source image(s) for edit action: a base64 data URI, an http(s) URL, or a local file path (auto-encoded to a data URI) — or an array of 2–4 to fuse into one render (e.g. subject + layout guide, or reference + brand logo). openai/* accepts up to 4, google/* up to 3; a mask cannot be combined with multiple images. | |
| model | No | Model to use (default: openai/gpt-image-2 for both generate and edit). gpt-image-2 renders on-image text best; nano-banana-pro for 4K photorealism; cogview-4 / grok-imagine-image for cheap drafts. | |
| action | No | generate: create from text; edit: transform existing image | generate |
| inline | No | Return a small inline image preview (thumbnail) the client can render in-conversation, in addition to the full-resolution URL. Defaults to the BLOCKRUN_INLINE_IMAGES env setting (off unless set). Rich clients (e.g. the VS Code extension) render it; plain terminals ignore it. Off keeps responses lightweight. | |
| prompt | Yes | Image description or edit instructions | |
| quality | No | standard | |
| agent_id | No | Agent identifier for budget tracking and enforcement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With all annotation hints false, the description supplies the real behavioral burden: costs USDC on the active chain, requires no API key, supports specific input formats/array constraints, and exposes per-model price and capability differences. It also discloses the inline-preview env default and limitation that masks are openai/gpt-image-* only and exclude multiple source images.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but effectively structured: front-loaded action summary, then actions, then models, then input-format constraints. Some details such as mask/source-image formats repeat the schema, so it is not maximally concise, but every large block adds non-obvious information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's nine parameters and no output schema, the description covers almost everything an agent needs before invoking: payment, model selection, input formats, multi-image limits, size constraints, and inline preview behavior. It routes chain/wallet setup to blockrun_wallet, leaving no critical parameter or action unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high, yet the description goes well beyond it by attaching prices, quality tiers, and recommended use cases to each model and by clarifying size/model compatibility and multi-image rules. This materially improves parameter choice for prompt, model, action, image, mask, size, and inline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly identifies the tool as image generation/editing via BlockRun, with distinct 'generate' and 'edit' actions and a concrete resource. The first sentence tells the agent exactly what it does, so it cannot be confused with image-unrelated siblings like blockrun_music or blockrun_video.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Descriptions of the default action, edit action, and model trade-offs give concrete selection guidance. It names blockrun_wallet for payment/chain context and lists model-specific use cases such as 'renders on-image text best' and 'for 4K photorealism', though it does not spell out 'use X instead of this tool' exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_marketsARead-only
Prediction market + derivatives data via Predexon aggregator. Flat $0.0095/call (every endpoint) — $0.0075 base + $0.002 tx fee.
CANONICAL CROSS-VENUE (Tier 1) — Predexon v2 unified data layer:
markets — list canonical market/question containers with cross-venue Predexon IDs
outcomes/:predexon_id — resolve a canonical outcome ID to its market context + venue listings Filter with ?venue=polymarket|kalshi|limitless|opinion|predictfun, ?status=, ?category=, ?league=, ?event_id=, ?pagination_key=
POLYMARKET (Tier 1):
polymarket/events, polymarket/markets — list events/markets (filter, sort, paginate)
polymarket/markets/keyset, polymarket/events/keyset — same data, cursor-based keyset pagination (use ?pagination_key=)
polymarket/crypto-updown — crypto up/down markets
polymarket/market-price/:token_id — current/historical price
polymarket/candlesticks/:condition_id — OHLCV by market
polymarket/candlesticks/token/:token_id — OHLCV by single outcome token
polymarket/volume-chart/:condition_id — volume w/ YES/NO split
polymarket/orderbooks, polymarket/trades, polymarket/activity
polymarket/markets/:token_id/volume, polymarket/markets/:condition_id/open_interest
polymarket/positions — user positions
polymarket/leaderboard, polymarket/leaderboard/market/:condition_id
polymarket/cohorts/stats, polymarket/market/:condition_id/top-holders
polymarket/uma/markets, polymarket/uma/market/:condition_id — UMA oracle questions/timeline
POLYMARKET (Tier 2 — wallet/smart-money analytics):
polymarket/wallet/:wallet — full smart-wallet profile
polymarket/wallet/:wallet/markets, .../similar
polymarket/wallet/pnl/:wallet, .../positions/:wallet, .../volume-chart/:wallet
polymarket/wallets/profiles, polymarket/wallets/filter — batch + AND/OR filter
polymarket/market/:condition_id/smart-money, polymarket/markets/smart-activity
WALLET IDENTITY & CLUSTERING (Tier 2) — cross-context labels + on-chain relationship graph:
polymarket/wallet/identity/:wallet — fetch identity + profile metadata for one wallet
polymarket/wallet/identities — POST { addresses: [...] } for bulk lookup (up to 200 wallets)
polymarket/wallet/:address/cluster — discover wallets connected via on-chain transfers + identity proofs
SPORTS (Tier 1):
sports/categories — list available sports categories
sports/markets — list sports markets grouped by game (filter ?league=, ?sport_type=, ?status=, ?venue=)
sports/markets/:game_id — single sports game with all venue outcomes
sports/outcomes/:predexon_id — equivalent sports outcomes across venues for a Predexon ID
KALSHI: kalshi/markets, kalshi/trades, kalshi/orderbooks LIMITLESS / OPINION / PREDICT.FUN: {platform}/markets, {platform}/orderbooks BINANCE FUTURES: binance/candles/:symbol, binance/ticks/:symbol
CROSS-PLATFORM:
matching-markets, matching-markets/pairs — equivalent markets across Polymarket+Kalshi
markets/search — search across all platforms in one call
REQUEST CONTRACTS:
Discover current markets with markets/search (its search term is "q"), then resolve the chosen Polymarket market with polymarket/markets/keyset and condition_id.
On polymarket/markets{,/keyset} the free-text filter is "search" (NOT "q"), and status:"open"/"closed" replaces Gamma's active/closed. "sort", "end_after", and "end_before" are supported; "order"/"ascending" are not.
Candlesticks interval is integer minutes ("1440", not "1h"); it is OPTIONAL (the server defaults). Which intervals a market serves varies — 1440 may work where 60 does not. start_time/end_time are Unix seconds.
polymarket/orderbooks requires token_id plus start_time/end_time in Unix milliseconds.
Smart-money needs a smart-wallet CRITERION (min_trades, min_volume, min_roi, min_*_pnl, min_win_rate, min_profit_factor). "window" only scopes time and is NOT sufficient on its own. Default: { window: "30d", min_trades: "100" }.
Pass query params via 'params' (GET). Use 'body' only for POST endpoints (e.g. polymarket/wallet/identities).
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body for POST queries (triggers pmQuery — most endpoints are GET) | |
| path | Yes | Endpoint path, e.g. 'polymarket/events', 'kalshi/markets/KXBTC-25MAR14', 'polymarket/wallet/0xabc...', 'markets/search' | |
| params | No | Query parameters for GET requests (e.g. markets/search uses { q: 'Bitcoin', status: 'open', venue: 'polymarket', limit: '20' }) | |
| agent_id | No | Agent identifier for budget tracking and enforcement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations already declare readOnly/openWorld/non-destructive, the description adds substantial behavioral detail: flat pricing per call, endpoint-specific requirements such as polymarket/orderbooks needing token_id plus Unix-millisecond start/end_time, smart-money needing a criterion beyond 'window', and candlestick interval behavior that varies by market. This far exceeds what the annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but it is well structured with tiered sections, bullet lists, and a dedicated request-contract block, making the content navigable. The opening states the resource and pricing immediately; however, the sheer volume and some redundancy in endpoint listings prevent it from being truly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-endpoint aggregator with no output schema, the description is unusually complete: it covers endpoint categories, filters, pagination, request sequencing, required params per endpoint, pricing, and POST exceptions. An agent has enough context to select an endpoint and invoke it correctly even without knowing exact response shapes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all four parameters, but the description meaningfully enriches them with endpoint path examples, a concrete params example, correct filter names ('search' vs 'q'), status conventions, and the GET/POST body contract. This tells an agent exactly how to populate path, params, and body in practice.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Prediction market + derivatives data via Predexon aggregator' and immediately frames the tool as a 'CANONICAL CROSS-VENUE (Tier 1) — Predexon v2 unified data layer', which clearly identifies what resource the tool operates on. It is much more than a tautology, but it is structured as an endpoint catalog rather than a single verb+resource statement, and it does not explicitly contrast with sibling Polymarket-focused tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'REQUEST CONTRACTS' section gives concrete sequencing guidance — use markets/search to discover, then resolve via polymarket/markets/keyset — and explains GET vs POST usage and filter naming quirks across endpoints. This is clear operational context, but there is no explicit guidance on when to use this tool versus blockrun_polymarket or blockrun_polymarket_read, so no exclusions/alternatives are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_modalADestructive
Run isolated code in a BlockRun-hosted Modal sandbox — disposable remote container, optional GPU.
Use when you need: a clean ephemeral environment, GPU access (T4/L4/A10G/A100/H100 — those five only), or a safer place for untrusted code. Prefer local tools for normal repo work.
⚠️ timeout IS THE BILLED LIFETIME — charged upfront in full, NEVER refunded. It is not an idle timeout: you pay for the time you ASK for, not the time you use, and terminating early refunds nothing. Ask for what you need, not a safe-looking ceiling.
timeout ≤ 300s → flat: $0.0120 CPU · $0.0520 T4 · $0.0820 L4 · $0.1020 A10G · $0.2020 A100 · $0.4020 H100
timeout > 300s → PER-HOUR × the full requested lifetime: $0.10/h CPU · $1.50 T4 · $2.00 L4 · $2.50 A10G · $4.00 A100 · $8.00/h H100 e.g. { timeout: 600, gpu: "A100" } = $0.6687 · { timeout: 86400, gpu: "H100" } = $192.00
Common paths (all POST):
sandbox/create — body: { image?, timeout?, cpu?, memory?, gpu?, setup_commands? } (see above — $0.0120 to $192.00)
sandbox/exec — body: { sandbox_id, command: ["python","-c","..."], timeout? } ($0.0030)
sandbox/status — body: { sandbox_id } ($0.0030)
sandbox/terminate — body: { sandbox_id } ($0.0030)
Full pricing tables + GPU details in the modal skill.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body. Sent as POST. | |
| path | Yes | Endpoint under /v1/modal/, e.g. 'sandbox/create', 'sandbox/exec' | |
| agent_id | No | Agent identifier for budget tracking and enforcement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating, open-world, destructive tool. The description adds crucial behavioral context beyond annotations: timeout is the billed lifetime, charged upfront with no refunds, sandboxes terminate on timeout/budget reset, and GPU access is capped at H100. This is fully consistent with readOnlyHint=false and destructiveHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Despite being long, the description is front-loaded with purpose and usage guidance, then uses compact bullet lists for pricing and endpoint schemas. Every sentence earns its place, espacially the billing warning, which is essential for correct invocaation and cost awareness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-endpoint, high-stakes billing tool with no output schema, the description is nearly complete: it covers paths, request bodies, pricing, GPU limitations, termination behavior, and budget replan. The main gap is that it never explicitly states what responses look like, e.g., that sandbox/create returns a sandbox_id needed for subsequent calls, though the endpoint list implies this chaining.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only describes 'body' as a JSON POST body, so the description adds real semantic value by specifying per-endpoint body shapes such as { image?, timeout, cpu?, memory?, gpu?, setup_commands? } for sandbox/create and { sandbox_id, command, timeout? } for sandbox/exec. It also clarifies path examples and the billing meaning of timeout, going well beyond the thin schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Run isolated code in a BlockRun-hosted Modal sandbox — disposable remote container, optional GPU.' It then lists concrete endpoints under /v1/modal/, making the tool's scope unmistakable and clearly distinct from sibling tools like blockrun_image or blockrun_chat.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool ('clean ephemeral environment', 'GPU access', 'safer place for untrusted code') and when not to ('Prefer local tools for normal repo work'). It also enumerates the available POST paths, helping the agent choose the right operation within the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_modelsARead-only
List available AI models with pricing. Use to discover models and compare costs.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter by category | all |
| provider | No | Filter by provider (e.g., 'openai', 'anthropic') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive, lowering the burden on the description. The description adds useful context by noting that results include pricing and that the tool supports discovery and cost comparison. There is no contradiction with the annotations, and no hidden side effects are implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. The core purpose is front-loaded, and the usage guidance is immediately actionable. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing tool with two optional parameters and no output schema, the description provides sufficient context: it names what is listed, includes pricing, and states the intended use. The schema covers filtering, and annotations cover safety, so no critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (category and provider) are already fully documented in the schema. The description adds no parameter-level detail, but based on the high schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'List available AI models with pricing.' It clearly communicates that this tool is for discovery and cost comparison, which distinguishes it from siblings like blockrun_chat or blockrun_image that execute model tasks rather than list them. It does not explicitly name a sibling alternative, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: 'Use to discover models and compare costs.' This tells an agent when the tool is appropriate, although it does not explicitly state when not to use it or mention alternatives. Still, for a simple listing tool this level of guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_musicA
Generate music tracks via BlockRun x402 (async, client-polled).
Generates a full-length ~3 minute MP3 track. Takes 1-3 minutes to complete. The tool submits the job and, for slower tracks, polls until it is ready; payment settles only when a finished track is returned — if it fails or times out, you are not charged.
Model: minimax/music-2.5+ ($0.1575/track, up to ~4 min)
Returns a permanent BlockRun-hosted URL.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Music model to use | minimax/music-2.5+ |
| lyrics | No | Custom lyrics. Cannot be used with instrumental: true | |
| prompt | Yes | Music style, mood, or description. E.g. 'upbeat synthwave with neon pads', 'chill lo-fi beats', 'epic orchestral film score' | |
| agent_id | No | Agent identifier for budget tracking and enforcement. | |
| instrumental | No | Generate without vocals (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses important behavioral traits beyond annotations: async submission with polling, time range, failure/no-charge semantics, model and cost, track length, and permanent URL return. Annotations are sparse, so this richness is valuable and fully covers what an agent should expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, followed by compact high-value details on timing, payment, cost, and output. Every sentence contributes useful information, with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for an async media-generation tool with no output schema: it covers behavior, cost, timing, failure conditions, model, and return value. The schema covers parameter specifics, so nothing required for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already documented (prompt, lyrics, instrumental, agent_id). The description adds cost and duration context but does not provide parameter-level meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Generate music tracks via BlockRun x402'. This clearly identifies the tool as the music-generation sibling among image, video, and speech tools, so an agent can distinguish it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear contextual guidance is provided: async client-polled operation, 1-3 minute completion time, payment only on success, and no charge on failure. However, it does not explicitly name alternatives or state when not to use this tool, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_phoneADestructive
Phone-number intelligence, US/CA number provisioning, and outbound AI voice calls.
Common paths (path = everything after /v1/):
phone/lookup POST body: { phoneNumber } ($0.01)
phone/lookup/fraud POST body: { phoneNumber } — SIM-swap + call-forwarding signals ($0.05)
phone/numbers/buy POST body: { country?: "US"|"CA", areaCode? } — 30-day lease ($5.00)
phone/numbers/renew POST body: { phoneNumber } — extend 30 days ($5.00)
phone/numbers/list POST body: {} — your wallet-owned numbers ($0.001)
phone/numbers/release POST body: { phoneNumber } — release back to pool (free)
voice/call POST body: { to, task, from, voice?, max_duration?, ... } ($0.54 flat)
voice/call/{call_id} GET (no body) — poll status + transcript (free)
REQUIRED for voice/call: from must be a number your wallet owns. Provision one with phone/numbers/buy first ($5, 30-day lease).
Voice presets: nat, josh, maya, june, paige, derek, florian. Phone numbers use E.164 format (e.g. +1 followed by 10 US digits, or +).
Voice call flow + voice preset details + full body shapes in the phone skill.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body. Sent as POST. Omit for the free GET poll (voice/call/{call_id}). | |
| path | Yes | Endpoint after /v1/. Use 'phone/...' for lookup + number ops, 'voice/call' for outbound AI calls, 'voice/call/{id}' (no body) to poll status. | |
| agent_id | No | Agent identifier for budget tracking and enforcement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and readOnlyHint=false; the description goes further by disclosing costs, 30-day leases, release-to-pool side effects, and the wallet-ownership requirement. It also marks which operations are free, which are paid, and what the flat call rate is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well structured: a one-line summary, a compact bulleted endpoint list with pricing, and short requirement/format sections. Every line carries actionable information with no filler. The critical requirement about wallet-owned numbers is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition covers all main endpoints, prerequisites, costs, number format, and voice presets, which is strong for a multi-endpoint tool. However, it defers 'full body shapes' for voice/call to an external `phone` skill and leaves the semantics of `task` undefined, so an agent may need additional information to construct a fully valid voice call request.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only describes path generically and body as a JSON object, but the description maps specific path strings to endpoints, lists exact body key shapes, marks `from` as required for voice/call, and gives E.164 formatting. This is far more semantically useful than the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise summary: 'Phone-number intelligence, US/CA number provisioning, and outbound AI voice calls.' It then enumerates eight distinct endpoints with method, body, and purpose, making its scope and resource clear and separating it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit endpoint routing under 'Common paths', states the prerequisite that voice/call 'from' must be a wallet-owned number provisioned via phone/numbers/buy, and explains when to use the free GET poll instead of a POST. This gives clear when-to-use and prerequisite guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_polymarketADestructive
Trade on Polymarket prediction markets (CLOB V2, Polygon). REAL MONEY — orders spend pUSD held in your Polymarket deposit wallet, signed locally by your BlockRun key. Free tool (no BlockRun API charge); discover markets/prices/token IDs with blockrun_markets first.
Run action:"setup" FIRST (and again after funding). It creates a gasless deposit wallet owned by your key, checks pUSD balance + exchange approvals, and prints funding instructions. Zero config — no Polymarket account or API keys; setup bootstraps its credentials from your wallet key.
Actions:
setup — create/inspect deposit wallet, funding, approvals (confirm:true to sign the approval batch), region check. Idempotent.
fund — top up the deposit wallet from your OWN Base USDC, gasless (confirm:true). amount_usd required. BlockRun pays the gas + charges $0.01; you need no ETH. Non-custodial (USDC → Polymarket bridge → your vault).
buy / sell — token_id (or condition_id+outcome) + either price+size (limit) or amount_usd (market buy) / size (market sell). confirm:true REQUIRED to place; omitting it returns a dry-run preview. Per-order cap: POLYMARKET_MAX_BET_USD (default $25).
orders — list open orders (optional condition_id filter)
cancel — order_id:"…" or all:true
positions — holdings incl. redeemable winnings (free Data-API)
redeem — claim resolved winnings for condition_id (confirm:true; gasless)
withdraw — cash out pUSD → native USDC on Base to your agent wallet (confirm:true). amount_usd optional (default: full balance); to_address optional (default: your wallet).
Prices are probabilities 0–1 on the market's tick grid. token_id comes from blockrun_markets Polymarket data. Geoblock is handled by default (CLOB traffic routes through BlockRun's Finland egress) — setup reports your region status. Complying with Polymarket's terms for the user's jurisdiction is the user's responsibility.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | cancel: cancel ALL open orders | |
| size | No | Shares — required for limit orders and market sells | |
| price | No | Limit price as probability (0–1). Omit for a market order. | |
| action | Yes | Operation to perform | |
| confirm | No | Must be true to place orders / sign approvals / redeem. Omit for a dry-run preview. | |
| outcome | No | Outcome label (e.g. 'Yes') — used with condition_id when token_id is omitted | |
| agent_id | No | Tag for the session betting ledger (bets do NOT draw from the x402 API budget) | |
| order_id | No | Order ID to cancel | |
| token_id | No | Outcome token ID (decimal ERC-1155 id from blockrun_markets clobTokenIds) | |
| post_only | No | Maker-only limit order (rejected if it would cross the book) | |
| amount_usd | No | pUSD dollars — to spend (market buy) or to cash out (withdraw; default full balance) | |
| expires_at | No | Unix seconds expiry (GTD only, ≥ ~3 min in the future) | |
| order_type | No | Default: GTC for limit orders, FOK for market orders | |
| to_address | No | withdraw: destination address on Base (default: your agent wallet) | |
| condition_id | No | Market condition ID (0x…). With `outcome` it resolves token_id; required for redeem. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses real-money spending, local key signing, gasless wallet creation, fees, non-custodial bridging, dry-run behavior, per-order caps, and geoblock routing. This gives the agent an unusually complete picture of side effects and operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but earned: the first sentence establishes purpose and risk, followed by a mandatory setup note, a clean bulleted action reference, and closing notes on pricing, region handling, and compliance. There is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 15 parameters, real-money transactions, and no output schema, the description covers prerequisites, funding flow, order mechanics, cancellation, redemption, withdrawal, fees, safety gates, and jurisdiction notes. An agent has enough context to call this tool correctly and safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema covers all parameters at 100%, the description adds action-specific meaning: token_id or condition_id+outcome resolution, price+size vs amount_usd semantics, confirm:true as a required side-effect gate, order_type defaults, and withdraw defaults for amount_usd and to_address. This materially exceeds the schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete verb and resource: 'Trade on Polymarket prediction markets (CLOB V2, Polygon)'. It then lists all nine actions with one-line semantics, making the tool's scope unmistakable and distinguishing it from discovery tools like blockrun_markets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit sequencing guidance: 'Run action: "setup" FIRST (and again after funding)' and tells the agent to 'discover markets/prices/token IDs with blockrun_markets first'. It also clarifies when confirm:true is required versus when a dry-run preview is returned, and explains market vs limit order parameter combinations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_polymarket_readARead-only
Read or preview Polymarket state without signing or changing anything.
Actions:
positions — holdings, current value, PnL, and redeemable status (free Data API)
orders — open CLOB orders, optionally filtered by condition_id
preview — build a live buy/sell order preview from the CLOB book. side plus token_id (or condition_id+outcome) are required. Market buys use amount_usd; limit orders use price+size. This action never accepts confirm and never signs or submits an order.
Use blockrun_polymarket only for setup and funds-affecting operations: confirmed buy/sell, cancel, redeem, fund, or withdraw.
| Name | Required | Description | Default |
|---|---|---|---|
| side | No | preview: order side | |
| size | No | preview: shares for limits and market sells | |
| price | No | preview: limit probability; omit for market order | |
| action | Yes | Read-only operation | |
| outcome | No | preview: outcome label used with condition_id | |
| token_id | No | preview: outcome token ID | |
| post_only | No | preview: maker-only limit order | |
| amount_usd | No | preview: pUSD to spend on a market buy | |
| expires_at | No | preview: GTD expiry in Unix seconds | |
| order_type | No | preview: order type | |
| condition_id | No | orders: optional market condition ID filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint and destructiveHint false, and the description reinforces them with concrete commitments: 'This action never accepts confirm and never signs or submits an order.' It also discloses the data sources, CLOB book and Data API, and clarifies that previews are live but non-mutating.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, bulleted by action, and front-loaded with the all-important safety statement. Every sentence adds functional value, and sibling routing is compressed into one clear sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the action bullets summarize what each call returns: Holdings, value, PnL, and redeemable status; open CLOB orders; and live order previews. Combined with a l00% schema-described parameters, the description gives the agent enough context to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds critical combination logic beyond the schema: preview requires side plus token_id or condition_id+outcome, market buys use amount_usd, limit orders use price+size, and condition_id filters orders. These cross-parameter requirements are not inferable from the individual parameter descriptions alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line specifies a read-only verb and resource with a clear safety boundary: 'Read or preview Polymarket state without signing or changing anything.' The action list explicitly names positions, orders, and preview, making the tool's scope unambiguous and distinct from the funds-affecting sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence gives explicit routing guidance: 'Use blockrun_polymarket only for setup and funds-affecting operations' and enumerates confirmed buy/sell, cancel, redeem, fund, or withdraw. This directly tells the agent when to use this tool versus its sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_priceARead-only
Realtime quotes and OHLC history for crypto, FX, commodities and 12 global stock markets (Pyth-backed).
action="price" — realtime quote for a symbol
action="history" — OHLC bars between from/to (unix seconds)
action="list" — discovery: list available symbols (free)
Pricing:
crypto / fx / commodity: FREE across price, history and list
stocks / usstock: $0.001 per price or history call (list free)
Stocks markets: us, hk, jp, kr, gb, de, fr, nl, ie, lu, cn, ca (required when category="stocks").
Examples:
{ action: "price", category: "crypto", symbol: "BTC-USD" }
{ action: "price", category: "stocks", symbol: "AAPL", market: "us" }
{ action: "history", category: "crypto", symbol: "ETH-USD", resolution: "D", from: 1700000000, to: 1710000000 }
{ action: "list", category: "crypto", query: "sol" }
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | History window end (unix seconds). | |
| from | No | History window start (unix seconds). | |
| limit | No | Max items for list (default 100, max 2000). | |
| query | No | Free-text filter for list. | |
| action | Yes | Which endpoint to hit: price, history, or list. | |
| market | No | Stock market code — required when category='stocks'. | |
| symbol | No | Ticker (required for price+history). e.g. BTC-USD, AAPL, EUR-USD. | |
| session | No | Equity session hint (pre/post/on); ignored for non-equity. | |
| agent_id | No | Agent identifier for budget tracking and enforcement. | |
| category | Yes | Market category. | |
| resolution | No | Bar resolution for history (default D). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only and non-destructive, and the description adds substantial behavioral context on top: per-category pricing, free list discovery, Pyth as the data source, session being ignored for non-equities, and unix timestamp requirements. This goes well beyond the safety profile conveyed by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized into a summary, action list, pricing section, market list, and examples. Every section earns its place, and the examples are compact yet illustrative. There is no vague filler, despite covering multiple actions, categories, and cost models.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, 5 enums, 3 actions, no output schema), the description covers the required category/action pairing, all market codes, pricing, and example payloads. A minor gap is the lack of response-shape details for the returned quotes or OHLC bars, but this isn't essential for selecting and invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the baseline is 3. The description adds real semantic value through examples that show valid parameter combinations, the stocks/market dependency, default resolution behavior, and action-specific fields. It doesn't document every parameter beyond the schema, but it clarifies how to use them together.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise statement of what the tool returns: realtime quotes and OHLC history for crypto, FX, commodities and 12 stock markets, Pyth-backed. It enumerates three concrete actions (price, history, list) and provides examples, making its scope distinguishable from sibling market/data tools without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear conditions for each action, pricing tiers, and the market requirement for stocks, so an agent knows when to invoke which action. It stops short of naming sibling tools to avoid, and doesn't explicitly enumerate when-not-to-use cases, but the action-level guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_realfaceA
Enroll a real person's face as a BytePlus RealFace asset, then drive Seedance 2.0 video with it (blockrun_video real_face_asset_id).
A RealFace asset (ta_xxxx) lets Seedance 2.0 / 2.0-fast / 2.0-mini generate video of a SPECIFIC real person — not a generic seed image. Only those three models: seedance-2.5 is numerically newer but does NOT accept ta_ assets, and seedance-1.5-pro never did. Enrollment is a multi-step flow because BytePlus requires a live phone liveness check (the real person nods + blinks on camera) before a face photo can be uploaded.
Actions:
init: FREE. Create an asset group + a phone H5 link. The tool renders the link as a QR code and opens it; the real person scans it on their phone and completes the ~1 min liveness check. Pass group_id to refresh an expired link.
status: FREE. Poll a group until status:"active" (ready_to_finalize:true). The H5 link is valid ~120s — re-init if it expires.
enroll: PAID ($0.01 USDC, Base only). After the group is active, upload a clear front-facing photo (image_url) of the SAME person. Returns the ta_xxxx asset id.
portrait: PAID ($0.01 USDC, Base only). Virtual Portrait — enroll an AI-GENERATED character from an image URL directly, NO liveness needed (one step: name + image_url → ta_xxxx). For fictional/AI characters only; for a real person use the init→status→enroll liveness flow.
list: FREE. List the RealFace + Virtual Portrait assets enrolled by this wallet (their ta_xxxx ids + names) so you can pick one for blockrun_video.
Typical flow:
blockrun_realface action:"init" name:"Alice" → scan QR on phone, do liveness
blockrun_realface action:"status" group_id:"legacy_rf_…" → repeat until ready_to_finalize:true
blockrun_realface action:"enroll" name:"Alice" group_id:"legacy_rf_…" image_url:"https://…/alice.jpg" → ta_xxxx
blockrun_video model:"bytedance/seedance-2.0" real_face_asset_id:"ta_xxxx" prompt:"…"
Privacy: BlockRun does not store face/liveness data — only the asset id, name, and the photo URL you supply.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Display name for the person/character (required for init, enroll, and portrait). | |
| action | Yes | What to do | |
| agent_id | No | Agent identifier for budget tracking and enforcement (enroll only). | |
| group_id | No | Asset-group id from init (required for status and enroll; pass to init to refresh an expired H5 link). Not used by portrait. | |
| image_url | No | Public HTTPS URL to a clear front-facing face image (JPG/PNG/WEBP, ≤10MB). Required for enroll and portrait. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate the tool is not read-only, but the description adds substantial behavioral context: multi-step liveness enrollment, free vs. paid actions, H5 link expiration (~120s), polling for active status, and privacy guarantees that BlockRun does not store face/liveness data. This goes far beyond what annotations provide and does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but every section earns its place given the multi-step workflow. It is front-loaded with the core purpose, uses bullet-style sections for actions, and includes a typical flow that converts complex sequencing into an easy-to-follow pattern. The privacy note is a useful closing detail rather than fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex paid/free multi-step tool with no output schema, the description is remarkably complete: it explains init/status/enroll/portrait/list, costs, liveness requirements, expiration behavior, model compatibility, and expected results (ta_xxxx asset ids). An agent has enough context to invoke all five actions correctly and route to blockrun_video afterwards.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema already covers all parameters, the description adds critical semantics: which actions require which parameters, group_id can refresh an expired link, image_url must be the same person as the liveness check, and action-specific behavior. It also clarifies that name is required for init, enroll, and portrait, which is not obvious from the top-level schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource statement: enrolling a real person's face as a BytePlus RealFace asset and using it to drive Seedance 2.0 video. It clearly distinguishes the tool from siblings by explaining what it feeds into (blockrun_video real_face_asset_id) and separating real-person vs. portrait enrollment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance for each action, including when to use portrait versus the liveness flow for real people. It also states model compatibility constraints (seedance-2.5 does not accept ta_ assets) and provides a typical end-to-end flow, making it easy for an agent to select and sequence calls correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_rpcADestructive
Raw JSON-RPC against 40+ blockchains — one endpoint, no node, no API key. $0.002 per call (batch charges per element).
Use when you need data the higher-level tools don't cover: contract reads (eth_call), balances, blocks, txs, logs, gas, or any chain-native RPC method.
Networks (full catalog in the rpc skill): ethereum, base, arbitrum, optimism, polygon, bsc, avalanche, solana, bitcoin, sui, near, ripple, polkadot, dogecoin, litecoin, monad, berachain, unichain, hyperevm, sonic, and 20+ more.
Examples: blockrun_rpc({ network: "ethereum", method: "eth_blockNumber" }) blockrun_rpc({ network: "base", method: "eth_getBalance", params: ["0xabc...", "latest"] }) blockrun_rpc({ network: "solana", method: "getSlot" }) blockrun_rpc({ network: "bitcoin", method: "getblockchaininfo" }) blockrun_rpc({ network: "ethereum", body: [{jsonrpc:"2.0",id:1,method:"eth_blockNumber"},{...}] }) // batch
Prefer blockrun_price (free quotes), blockrun_dex (free DEX data), or blockrun_surf (labeled/aggregated data) when they cover the question — this tool is for raw chain access.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Full JSON-RPC 2.0 body or an array of them (batch). Overrides method/params when set. | |
| method | No | JSON-RPC method, e.g. 'eth_blockNumber', 'eth_call', 'getSlot' (Solana), 'getblockchaininfo' (Bitcoin). Required unless 'body' is set. | |
| params | No | JSON-RPC params array for the method, e.g. ['0xabc...', 'latest']. | |
| network | Yes | Chain key, e.g. 'ethereum', 'base', 'solana', 'bitcoin', 'arbitrum', 'polygon'. Unknown slugs pass through to the Tatum gateway. | |
| agent_id | No | Agent identifier for budget tracking and enforcement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal openWorldHint and destructiveHint, and the description adds useful context on cost, no-node/no-API-key auth, unknown network slug pass-through, and raw chain-native methods. It doesn't explicitly warn that some methods can change state, but the destructiveHint annotation and 'raw JSON-RPC' framing cover that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core value proposition and pricing, followed by use case, network list, examples, and alternatives. Every section contributes actionable information, and the examples make it easy for an agent to mimic the call shape.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a broad raw-RPC tool with no output schema, the description provides enough to call it correctly: networks, examples, batch usage, pricing, and alternatives. It does not describe the JSON-RPC response/error shape, but that is fairly standard and inferable from the protocol and examples.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema with concrete examples mapping network, method, params, and a batch body example, plus clarifying that body overrides method/params. It doesn't add examples or explanation for agent_id, but the schema already documents that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific purpose: raw JSON-RPC access to 40+ blockchains via one endpoint, with explicit examples showing usage. It also distinguishes itself from higher-level sibling tools by noting it is for data those tools don't cover.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool ('use when you need data the higher-level tools don't cover') and when not to use it ('Prefer blockrun_price, blockrun_dex, or blockrun_surf when they cover the question'). It names concrete alternatives, making routing unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_searchARead-only
Grok Live Search — real-time web + X/Twitter + news with AI-summarized results and citations. PRICED PER SOURCE and expensive by default: $0.025 × max_results, +5% gateway buffer — default max_results=10 settles ~$0.26 (max_results=50 → $1.31). Pass a smaller max_results to cap spend; for a plain fact, 3 sources ($0.08) is usually enough.
Common shape:
body: { query: "...", sources: ["web","x","news"], max_results: 10, from_date: "YYYY-MM-DD", to_date: "YYYY-MM-DD" }
sources accepts any subset of ["web","x","news"] (defaults to all three). For tweet-only searches, use ["x"]. max_results is 1–50 (default 10) and drives the price — pass a smaller value if you want to cap spend.
Full request shape + worked examples in the search skill (skills/search/SKILL.md).
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body. At minimum { query: '...' }. Sent as POST. | |
| path | No | Endpoint sub-path under /v1/search/ (default empty = root /v1/search). Reserved for future surfaces. | |
| agent_id | No | Agent identifier for budget tracking and enforcement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/destructive annotations, the description discloses pricing, cost calculation, defaults, lower/upper bounds on max_results, and source behavior. This gives an agent crucial cost and scope information before invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and most sentences carry useful cost or request-shape information. However, it ends with an incomplete sentence ('Full request shape + worked examples in the') and the pricing block is longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An agent can construct a valid call: body shape, sources, max_results bounds, and date formats are all provided, and the readOnly annotations cover safety. It falls short of full completeness because the promised full request shape/examples are cut off and the return payload is only vaguely described as AI-summarized results with citations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high but terse; the description adds real semantics for the body parameter: query, sources array choices, max_results range/default, and date format. It effectively documents the nested request body that the schema leaves implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening line identifies a specific function: real-time web/X/Twitter/news search with AI-summarized results and citations. It does not explicitly name sibling search tools like blockrun_exa, so it falls just short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides practical guidance: use ['x'] for tweet-only searches, set max_results to control cost, and 3 sources is often enough for a plain fact. However, it never explains when to prefer this tool over blockrun_exa/surf or when not to use it, leaving cross-tool routing mostly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_speechA
AI voice via BlockRun x402 — speak text aloud (ElevenLabs or ByteDance Seed Audio), generate sound effects, list voices.
Actions:
speak (default): text-to-speech. E.g. "speak this with the sarah voice". Price = chars/1000 × rate (min $0.001), quoted before payment.
sound_effect: cinematic sound effects from a text prompt, up to 22s ($0.0525/clip)
voices: list available voices (free)
Models (speak): elevenlabs/flash-v2.5 ($0.05/1k chars, 75ms, default), elevenlabs/turbo-v2.5 ($0.05/1k), elevenlabs/multilingual-v2 ($0.10/1k, narration), elevenlabs/v3 ($0.10/1k, most expressive), bytedance/seed-audio-1.0 ($0.003/sec of output, est. from input length; max 3k chars in / 120s out) — prompt-DIRECTED audio: describe the voice, emotion, and sound staging in the input text itself ("a tired detective mutters, rain in the background: ..."); the voice parameter is ignored.
Voice aliases (ElevenLabs models only): sarah (default), george, laura, charlie, river, roger, callum, harry — or any raw ElevenLabs voice_id.
Returns a hosted audio URL — download immediately if you need to keep the file.
| Name | Required | Description | Default |
|---|---|---|---|
| input | No | speak: text to synthesize. sound_effect: description of the sound, e.g. 'rain on a tin roof, distant thunder' (max 1000 chars). | |
| model | No | Speech model (speak only). seed-audio-1.0 is prompt-directed: voice/emotion/staging go in the input text, the voice param is ignored, and billing is per estimated second of output. | elevenlabs/flash-v2.5 |
| speed | No | Playback speed 0.7-1.2 (speak only) | |
| voice | No | Voice alias (sarah, george, laura, charlie, river, roger, callum, harry) or raw ElevenLabs voice_id. Default: sarah. | |
| action | No | speak: text-to-speech (default). sound_effect: generate a sound effect. voices: list voices (free). | speak |
| agent_id | No | Agent identifier for budget tracking and enforcement. | |
| response_format | No | Audio format | mp3 |
| duration_seconds | No | Sound effect length in seconds (sound_effect only; default: auto) | |
| prompt_influence | No | How literally to follow the prompt, 0-1 (sound_effect only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false and destructiveHint=false, so the description carries the burden of behavioral disclosure. It goes far beyond annotations by specifying pricing, per-model latency and characteristics, the prompt-directed behavior of bytedance/seed-audio-1.0 (voice parameter ignored), and that the returned hosted URL requires immediate download. This is rich, non-obvious behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence delivers useful information: purpose, actions, pricing, models, aliases, behavioral caveats, and return-value guidance. It is logically organized with line breaks and no filler, making it dense yet easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters, 3 enums, no output schema, and minimal annotations, the description is remarkably complete. It covers return value behavior, pricing, model selection, voice handling, parameter constraints, and action differences—everything an agent needs to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema description coverage is 100%, the description adds substantial meaning: it expands the voice aliases, explains when the voice param is ignored, gives model-specific billing details, clarifies action-specific parameter usage, and describes the output as a hosted audio URL. This far exceeds the baseline for fully covered schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's core purpose: 'AI voice via BlockRun x402 — speak text aloud (ElevenLabs or ByteDance Seed Audio), generate sound effects, list voices.' It enumerates distinct actions, models, and voice aliases, giving agents a concrete understanding of what the tool does and how it differs from non-speech siblings like image, music, or video tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear action-level guidance: use 'speak' for text-to-speech, 'sound_effect' for cinematic effects, and 'voices' to list voices. It does not explicitly name sibling tools to contrast with, so while the usage context is strong, it lacks the explicit when-not-to-use-alternative statements that would earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_surfARead-only
Unified crypto data via Surf (asksurf.ai) — 83 endpoints, one API.
Coverage: CEX market data (16 exchanges), on-chain SQL across 13 chains, 100M+ labeled wallets, prediction markets (Polymarket + Kalshi), social mindshare / CT intelligence, news, and unified search.
Pricing (settled in USDC to Surf's Base treasury):
Flat $0.0095/call — every endpoint, including raw on-chain SQL. No tiers. ($0.0075 base + $0.002 tx fee.)
Common paths (full 83-endpoint catalog in the surf skill):
market/price?symbol=BTC
exchange/price?pair=BTC-USDT
prediction-market/polymarket/ranking
search/web?q=ethereum+pectra+upgrade
wallet/detail?address=0x...
social/mindshare?q=ethereum&interval=1d
onchain/sql + body:{ sql: "SELECT ..." }
Method is auto-routed: pass 'body' for POST endpoints; otherwise GET with 'params'. Each Surf endpoint pre-validates required params before settling — you get a 400 (not a charge) if a required field is missing. Browse the full catalog: https://blockrun.ai/marketplace/surf
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON body for POST endpoints. Provide for: onchain/query, onchain/sql. When set, the call is sent as POST; otherwise GET with params. | |
| path | Yes | Endpoint path under /v1/surf/, e.g. 'market/price', 'prediction-market/polymarket/ranking', 'wallet/detail', 'onchain/sql' | |
| params | No | Query parameters for GET endpoints, e.g. { symbol: 'BTC' } or { address: '0x...', chain: 'ethereum' } | |
| agent_id | No | Agent identifier for budget tracking and enforcement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive. The description adds worthwhile behavioral detail: pricing settled in USDC per call, method auto-routing based on body presence, and pre-validation behavior that returns a 400 rather than a charge for missing required fields. This goes beyond annotations and helps the agent understand side effects and error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average, but the structure is effective: purpose, coverage, pricing, common paths, and routing behavior are clearly separated. The extra details about cost and error handling are relevant for a paid API gateway. Minor redundancy exists, but no sentence feels wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a broad 83-endpoint gateway with no output schema, the description covers the essential operational context: what data domains are available, how to route methods, what parameters look like, cost implications, and where to find the full endpoint catalog. It could include output-shape guidance, but that is not required given its absence from output schema and the explicit catalog link.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, giving a baseline of 3. The description adds value by showing concrete endpoint path examples such as 'market/price?symbol=BTC' and the onchain/sql body shape, clarifying how path, params, and body interact. This materially helps an agent construct valid calls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a unified crypto data gateway via Surf, listing concrete coverage areas (CEX, on-chain SQL, prediction markets, social mindshare) and example paths. It lacks an explicit contrast with sibling data tools, so it is clear but does not fully disambiguate among similar siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives common paths and method auto-routing, which implies when to use the tool for data lookups. However, it does not provide explicit when/when-not guidance relative to sibling tools like blockrun_markets, blockrun_price, or blockrun_polymarket. The usage context is present but not stated as a decision rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_videoA
Generate short AI videos via BlockRun x402 on the active Base or Solana chain (async, client-polled).
Turns a text prompt (and optional seed image) into a short MP4 clip. The tool submits the job, then polls until the video is ready (typical total wall-time 60-180s; 9 min Base / 15 min Solana hard cap). Payment is settled only when upstream returns a finished video — if the job fails or we give up, you are not charged.
Models. Every rate below is what you are CHARGED (margin and transaction fee included), at the 720p baseline Seedance renders by default with synced audio:
azure/sora-2 (~$0.105/sec, 720p + synced audio, text-to-video) — OpenAI Sora 2 via Azure AI Foundry. duration_seconds must be 4, 8, or 12 (4s default -> ~$0.42/clip). No image_url / RealFace.
xai/grok-imagine-video ($0.05/sec at 480p default, $0.07/sec at 720p; 8s default -> $0.401/clip, 1-15s) — stylized, fast. 480p/720p only.
bytedance/seedance-1.5-pro (~$0.071/sec, 4-12s, 5s default -> ~$0.35/clip) — cheapest Seedance, token-priced upstream
bytedance/seedance-2.0-mini (~$0.080/sec, 4-15s, 5s default) — 2.0-generation quality at roughly half the 2.0-fast rate; 720p ceiling; supports RealFace and first/last-frame
bytedance/seedance-2.0-fast (~$0.165/sec, 4-15s, ~60-80s gen) — sweet-spot price/quality; supports BytePlus RealFace assets
bytedance/seedance-2.0 (~$0.227/sec, 4-15s, up to 4K) — highest quality, and the ONLY model that renders true 4K; supports RealFace, first/last-frame and reference media
bytedance/seedance-2.5 (~$0.315/sec, 4-30s, 5s default) — long-form: double 2.0's length ceiling, multilingual. NOT a strict upgrade — it caps at 720p and does NOT support RealFace or first/last-frame. Use 2.0 for 1080p/4K or real-person video.
Image-to-video is NOT cheaper than text-to-video on Seedance — same per-second rate. Higher resolutions ARE more expensive (token-priced: 1080p ~2.25x, 4K ~9x the 720p rate); the 402 quote is authoritative and is what gets charged.
RealFace: to generate video of a SPECIFIC real person, first enroll them with blockrun_realface (returns a ta_xxxx asset id), then pass real_face_asset_id here with seedance-2.0, seedance-2.0-fast, or seedance-2.0-mini. Mutually exclusive with image_url.
Returns a permanent blockrun-hosted MP4 URL (the gateway mirrors the asset to GCS so URLs don't expire).
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Video model to use | xai/grok-imagine-video |
| prompt | Yes | Text description of the video to generate. E.g. 'a red apple slowly spinning on a wooden table', 'a hummingbird hovering near a red flower, ultra slow motion' | |
| agent_id | No | Agent identifier for budget tracking and enforcement. | |
| image_url | No | Optional seed image URL for image-to-video generation | |
| resolution | No | Output resolution. Seedance defaults to 720p and is token-priced (~2.25x at 1080p, ~9x at 4K); per-model sets from token360's published schema: seedance-2.0 480p/720p/1080p/4K · 1.5-pro 480p/720p/1080p · 2.0-fast, 2.0-mini and 2.5 480p/720p only. grok-imagine-video honours 480p (default, $0.05/sec) and 720p ($0.07/sec) and rejects anything higher. Ignored by Sora only (dropped from the request). | |
| aspect_ratio | No | Output aspect ratio. Seedance honors the full set; Sora uses it only to pick portrait vs landscape (9:16 / 3:4 -> portrait); Grok ignores it (the gateway never forwards it to xAI). Defaults to the model's own default. (9:21 removed 2026-08-07 — no Seedance model offers it; use 9:16 for vertical.) | |
| generate_audio | No | Seedance only: whether to generate a synced audio track. Defaults ON for text-to-video and OFF for image/RealFace-conditioned. The auto-generated audio is occasionally rejected by upstream moderation ('output audio may contain sensitive information') even for benign prompts — pass false to skip audio and avoid that failure. Ignored by xAI/Sora. | |
| last_frame_url | No | Seedance 1.5-pro / 2.0 / 2.0-fast / 2.0-mini only (NOT 2.5): first-and-last-frame interpolation. A second image URL that seeds the FINAL frame so the model tweens from image_url (first frame) → last_frame_url (last frame). Requires image_url; mutually exclusive with real_face_asset_id. | |
| duration_seconds | No | Duration to bill for. Defaults to the model's own default (8s xAI, 5s Seedance, 4s Sora). Per-model range: seedance-1.5-pro 4-12s · seedance-2.0 / 2.0-fast / 2.0-mini 4-15s · seedance-2.5 4-30s · sora-2 exactly 4, 8 or 12 · grok-imagine-video 1-15s. | |
| real_face_asset_id | No | BytePlus RealFace asset id (from blockrun_realface enroll/list) to generate video of a specific real person. Seedance 2.0 / 2.0-fast / 2.0-mini only (NOT 2.5). Mutually exclusive with image_url. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the minimal annotations, the description discloses async waiting times, hard caps, failure/no-charge behavior, permanent GCS-backed URL, payment inclusion, and per-model resolution/audio behavior. It gives the agent an accurate mental model of side effects and cost consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long but deliberately structured and front-loaded: purpose and async behavior first, then model bullets and caveats, then return value. Given 10 parameters and seven provider models, the density is justified and no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex paid generation tool with no output schema, the description is unusually complete: it covers invocation, polling, costs, model differences, constraints, failure semantics, and says the return is a permanent MP4 URL. Nothing critical is left for the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds substantial semantics: per-model duration ranges and defaults, resolution multipliers and per-model ceilings, aspect-ratio handling by provider, RealFace prerequisites/mutual exclusion, and last-frame requirements. It goes far beyond the schema's generic property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: generate short AI videos via BlockRun x402, and clearly distinguishes the output (short MP4 clip) from sibling image/audio tools. It also names the async client-polled behavior up front, so an agent knows exactly what operation this tool performs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit model-selection guidance with tradeoffs (quality, price, resolution, RealFace, duration ceilings), including when to choose 2.0 vs 2.5 and when RealFace requires blockrun_realface first. It states when image-to-video is not cheaper, when audio should be disabled, and which models ignore certain parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blockrun_walletA
Call this tool to manage the BlockRun payment wallet and control agent spending budgets.
Call this FIRST if any other blockrun_* tool returns a payment/balance error. Call this to check your current USDC balance before expensive operations. Call this to set spending limits before spawning child agents.
The server holds TWO wallets — one on Base, one on Solana — but pays on ONE active chain at a time. status shows both addresses/balances and which is active. Default chain is Base.
To pay on Solana (no env vars, no file editing, no restart):
action:"chain" chain:"solana" → provisions + activates the Solana wallet
action:"setup" → Solana address + funding QR (send USDC SPL on Solana) Switch back with action:"chain" chain:"base". Base-only — these ignore Solana and need Base: blockrun_music, blockrun_speech, blockrun_realface, paid blockrun_price, blockrun_chat routing:"smart", and native Anthropic (claude-*). blockrun_image and blockrun_video pay on either chain.
Actions:
status (default): Both wallet addresses + USDC balances, active chain, session spending
deposit: Buy USDC with a card — mints a one-time Coinbase Onramp link and opens it in the browser (Base only; funds settle into your own wallet). Paid tools auto-open this on an out-of-funds failure; call it directly to fund up front.
setup: Get funding instructions + QR code for the ACTIVE chain (call this when balance is 0)
qr: Open QR code (active chain) in system viewer
chain + chain:"base"|"solana": Switch the active payment chain (omit chain: to just see the current one)
Budget controls:
budget + budget_action:"set" + budget_amount:1.00 → Set global spend cap
budget + budget_action:"clear" → Remove global spend cap
Multi-agent orchestration:
delegate + agent_id:"research" + agent_limit:2.00 → Allocate $2 to a child agent
revoke + agent_id:"research" → Remove a child agent's budget
report → See per-agent spending breakdown
Usage pattern for multi-agent systems:
blockrun_wallet action:"delegate" agent_id:"worker-1" agent_limit:1.00
Pass agent_id:"worker-1" to all blockrun_chat/search/etc calls for that agent
blockrun_wallet action:"report" to audit spending
Do NOT call this for actual AI queries — use blockrun_chat for that.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Target chain for action='chain'. Omit to view the current active chain. | |
| action | No | What to do | status |
| agent_id | No | Agent identifier for delegate/revoke/report actions | |
| agent_limit | No | Budget limit in USD for this agent (required for delegate action) | |
| budget_action | No | Budget action (for action='budget') | |
| budget_amount | No | Budget limit in USD (for budget_action='set') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses significant behavioral side effects: deposit 'mints a one-time Coinbase Onramp link and opens it in the browser,' chain switch 'provisions + activates the Solana wallet,' and budget/delegate/revoke actions modify spending state. It also reveals the two-wallet architecture and active-chain behavior that annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but highly structured with clear section headers (Actions, Budget controls, Multi-agent orchestration, Usage pattern) and front-loaded critical guidance in the first three sentences. Every section earns its place given the tool's 9 actions, 6 parameters, and multi-chain behavior. The formatting makes it scannable despite its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description compensates by describing what status reports ('both addresses/balances and which is active' and 'session spending'). It covers the full action matrix, cross-chain provisioning steps, Base-only restrictions for sibling tools, budget controls, multi-agent delegation, and the recommended usage pattern. Nothing an agent needs to correctly invoke this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema already documents all 6 parameters (100% coverage), the description adds substantial meaning: it explains each action value with usage examples (e.g., 'chain + chain:"base"|"solana" → Switch the active payment chain'), clarifies defaults ('status (default)'), states that agent_limit is required for delegate, and describes the effect of omitting chain ('omit chain: to just see the current one'). This goes well beyond the schema's terse 'What to do'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a specific verb and resource: 'manage the BlockRun payment wallet and control agent spending budgets.' It distinguishes itself from the 19 sibling blockrun_* tools by immediately stating what it is for and ends with an explicit exclusion: 'Do NOT call this for actual AI queries — use blockrun_chat for that.' This leaves no ambiguity about its purpose relative to siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete when-to-use rules: call first on payment/balance errors, before expensive operations, and before spawning child agents. It also names alternatives and exclusions ('Base-only... need Base: blockrun_music...' and 'use blockrun_chat for that'), making the routing decision explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
20 tool updates
v0.45.1- Changed
blockrun_chat1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_defi1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_dex1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_exa1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_image1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_markets1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_modal1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_models1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_music1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_phone1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_polymarket1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_polymarket_read1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_price1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_realface1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_rpc1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_search1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_speech1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_surf1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_video1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
- Changed
blockrun_wallet1 field changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#"
4 tool updates
v0.40.1- Changed
blockrun_chat1 field changed- changed
Input schema / properties / mode / descriptionPrevious value: -"Routing mode: powerful/reasoning = frontier models (Opus 4.8, GPT-5.6-sol, Kimi K3), coding = code-specialized, glm = Zhipu GLM (cheap, great for coding), cheap = budget models, free = NVIDIA only (ignored if model specified)"New value: +"Routing mode: powerful/reasoning = frontier models (Opus 5, GPT-5.6-sol, Kimi K3), coding = code-specialized, glm = Zhipu GLM (great for coding), cheap = budget models, free = NVIDIA only (ignored if model specified)"
- Changed
blockrun_music1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "minimax/music-2.5+", - "minimax/music-2.5" -]New value: +[ + "minimax/music-2.5+" +]
- Changed
blockrun_speech2 fields changed- changed
Input schema / properties / model / descriptionPrevious value: -"Speech model (speak only)"New value: +"Speech model (speak only). seed-audio-1.0 is prompt-directed: voice/emotion/staging go in the input text, the voice param is ignored, and billing is per estimated second of output." - changed
Input schema / properties / model / enumPrevious value: -[ - "elevenlabs/flash-v2.5", - "elevenlabs/turbo-v2.5", - "elevenlabs/multilingual-v2", - "elevenlabs/v3" -]New value: +[ + "elevenlabs/flash-v2.5", + "elevenlabs/turbo-v2.5", + "elevenlabs/multilingual-v2", + "elevenlabs/v3", + "bytedance/seed-audio-1.0" +]
- Changed
blockrun_video5 fields changed- changed
Input schema / properties / duration_seconds / descriptionPrevious value: -"Duration to bill for. Defaults to the model's own default (8s xAI, 5s Seedance, 4s Sora). Per-model range: seedance-1.5-pro 4-12s · seedance-2.0 / 2.0-fast 4-15s · seedance-2.5 4-30s · sora-2 exactly 4, 8 or 12 · grok-imagine-video 1-15s."New value: +"Duration to bill for. Defaults to the model's own default (8s xAI, 5s Seedance, 4s Sora). Per-model range: seedance-1.5-pro 4-12s · seedance-2.0 / 2.0-fast / 2.0-mini 4-15s · seedance-2.5 4-30s · sora-2 exactly 4, 8 or 12 · grok-imagine-video 1-15s." - changed
Input schema / properties / last_frame_url / descriptionPrevious value: -"Seedance 1.5-pro / 2.0 / 2.0-fast only (NOT 2.5): first-and-last-frame interpolation. A second image URL that seeds the FINAL frame so the model tweens from image_url (first frame) → last_frame_url (last frame). Requires image_url; mutually exclusive with real_face_asset_id."New value: +"Seedance 1.5-pro / 2.0 / 2.0-fast / 2.0-mini only (NOT 2.5): first-and-last-frame interpolation. A second image URL that seeds the FINAL frame so the model tweens from image_url (first frame) → last_frame_url (last frame). Requires image_url; mutually exclusive with real_face_asset_id." - changed
Input schema / properties / model / enumPrevious value: -[ - "azure/sora-2", - "xai/grok-imagine-video", - "bytedance/seedance-1.5-pro", - "bytedance/seedance-2.0-fast", - "bytedance/seedance-2.0", - "bytedance/seedance-2.5" -]New value: +[ + "azure/sora-2", + "xai/grok-imagine-video", + "bytedance/seedance-1.5-pro", + "bytedance/seedance-2.0-mini", + "bytedance/seedance-2.0-fast", + "bytedance/seedance-2.0", + "bytedance/seedance-2.5" +] - changed
Input schema / properties / real_face_asset_id / descriptionPrevious value: -"BytePlus RealFace asset id (from blockrun_realface enroll/list) to generate video of a specific real person. Seedance 2.0 / 2.0-fast only (NOT 2.5). Mutually exclusive with image_url."New value: +"BytePlus RealFace asset id (from blockrun_realface enroll/list) to generate video of a specific real person. Seedance 2.0 / 2.0-fast / 2.0-mini only (NOT 2.5). Mutually exclusive with image_url." - changed
Input schema / properties / resolution / descriptionPrevious value: -"Seedance only: output resolution. Defaults to 720p. Higher resolutions cost more (token-priced upstream, ~2.25x at 1080p and ~9x at 4K). Per-model sets from token360's published schema: seedance-2.0 480p/720p/1080p/4K · 1.5-pro 480p/720p/1080p · 2.0-fast and 2.5 480p/720p only. Ignored by xAI/Sora (dropped from the request)."New value: +"Output resolution. Seedance defaults to 720p and is token-priced (~2.25x at 1080p, ~9x at 4K); per-model sets from token360's published schema: seedance-2.0 480p/720p/1080p/4K · 1.5-pro 480p/720p/1080p · 2.0-fast, 2.0-mini and 2.5 480p/720p only. grok-imagine-video honours 480p (default, $0.05/sec) and 720p ($0.07/sec) and rejects anything higher. Ignored by Sora only (dropped from the request)."
1 tool update
v0.39.0- Changed
blockrun_video8 fields changed- changed
Input schema / properties / aspect_ratio / descriptionPrevious value: -"Seedance only: output aspect ratio, e.g. '9:16' for vertical/mobile, '16:9' for landscape. Defaults to the model's own default. Ignored by xAI/Sora."New value: +"Output aspect ratio. Seedance honors the full set; Sora uses it only to pick portrait vs landscape (9:16 / 3:4 -> portrait); Grok ignores it (the gateway never forwards it to xAI). Defaults to the model's own default. (9:21 removed 2026-08-07 — no Seedance model offers it; use 9:16 for vertical.)" - changed
Input schema / properties / aspect_ratio / enumPrevious value: -[ - "adaptive", - "16:9", - "9:16", - "1:1", - "4:3", - "3:4", - "21:9", - "9:21" -]New value: +[ + "adaptive", + "16:9", + "9:16", + "1:1", + "4:3", + "3:4", + "21:9" +] - changed
Input schema / properties / duration_seconds / descriptionPrevious value: -"Duration to bill for (defaults to the model's default — 8s for xAI, 5s for Seedance; Seedance supports up to 10s)."New value: +"Duration to bill for. Defaults to the model's own default (8s xAI, 5s Seedance, 4s Sora). Per-model range: seedance-1.5-pro 4-12s · seedance-2.0 / 2.0-fast 4-15s · seedance-2.5 4-30s · sora-2 exactly 4, 8 or 12 · grok-imagine-video 1-15s." - changed
Input schema / properties / last_frame_url / descriptionPrevious value: -"Seedance only: first-and-last-frame interpolation. A second image URL that seeds the FINAL frame so the model tweens from image_url (first frame) → last_frame_url (last frame). Requires image_url; mutually exclusive with real_face_asset_id. Priced as image-to-video."New value: +"Seedance 1.5-pro / 2.0 / 2.0-fast only (NOT 2.5): first-and-last-frame interpolation. A second image URL that seeds the FINAL frame so the model tweens from image_url (first frame) → last_frame_url (last frame). Requires image_url; mutually exclusive with real_face_asset_id." - changed
Input schema / properties / model / enumPrevious value: -[ - "azure/sora-2", - "xai/grok-imagine-video", - "bytedance/seedance-1.5-pro", - "bytedance/seedance-2.0-fast", - "bytedance/seedance-2.0" -]New value: +[ + "azure/sora-2", + "xai/grok-imagine-video", + "bytedance/seedance-1.5-pro", + "bytedance/seedance-2.0-fast", + "bytedance/seedance-2.0", + "bytedance/seedance-2.5" +] - changed
Input schema / properties / real_face_asset_id / descriptionPrevious value: -"BytePlus RealFace asset id (from blockrun_realface enroll/list) to generate video of a specific real person. Seedance 2.0 / 2.0-fast only. Mutually exclusive with image_url."New value: +"BytePlus RealFace asset id (from blockrun_realface enroll/list) to generate video of a specific real person. Seedance 2.0 / 2.0-fast only (NOT 2.5). Mutually exclusive with image_url." - changed
Input schema / properties / resolution / descriptionPrevious value: -"Seedance only: output resolution. Defaults to 720p. Higher resolutions cost more (token-priced upstream) — the final price is set by the 402 challenge, so the up-front estimate may understate 1080p/4K. Ignored by xAI/Sora."New value: +"Seedance only: output resolution. Defaults to 720p. Higher resolutions cost more (token-priced upstream, ~2.25x at 1080p and ~9x at 4K). Per-model sets from token360's published schema: seedance-2.0 480p/720p/1080p/4K · 1.5-pro 480p/720p/1080p · 2.0-fast and 2.5 480p/720p only. Ignored by xAI/Sora (dropped from the request)." - changed
Input schema / properties / resolution / enumPrevious value: -[ - "360p", - "480p", - "540p", - "720p", - "1080p", - "1K", - "2K", - "4K" -]New value: +[ + "480p", + "720p", + "1080p", + "4K" +]
1 tool update
v0.37.1- Changed
blockrun_image2 fields changed- changed
Input schema / properties / model / enumPrevious value: -[ - "zai/cogview-4", - "google/nano-banana", - "google/nano-banana-pro", - "openai/gpt-image-1", - "openai/gpt-image-2", - "xai/grok-imagine-image", - "xai/grok-imagine-image-pro" -]New value: +[ + "zai/cogview-4", + "google/nano-banana", + "google/nano-banana-2", + "google/nano-banana-pro", + "openai/gpt-image-1", + "openai/gpt-image-2", + "xai/grok-imagine-image", + "xai/grok-imagine-image-pro", + "bytedance/seedream-5-pro" +] - changed
Input schema / properties / size / descriptionPrevious value: -"Image size. Common values: 1024x1024 (all models), 1536x1024 / 1024x1536 (gpt-image-*), 2048x2048 / 4096x4096 (nano-banana-pro)"New value: +"Image size. Common values: 1024x1024 (all models), 1536x1024 / 1024x1536 (gpt-image-*), 2048x2048 / 4096x4096 (nano-banana-pro), 1280x720 / 2048x1024 / 2048x2048 / 2848x1600 (seedream-5-pro)"
3 tool updates
v0.33.0- Changed
blockrun_chat3 fields changed- changed
Input schema / properties / messages / descriptionPrevious value: -"Conversation history for multi-turn context. When provided, 'message' is appended as the final user turn. Use with explicit 'model' param (defaults to 'openai/gpt-5.5' if not specified). Note: if you include a role:'system' entry in messages[], do not also pass the system param to avoid duplicate system messages."New value: +"Conversation history for multi-turn context. When provided, 'message' is appended as the final user turn. Use with explicit 'model' param (defaults to 'openai/gpt-5.6-terra' if not specified). Note: if you include a role:'system' entry in messages[], do not also pass the system param to avoid duplicate system messages." - changed
Input schema / properties / mode / descriptionPrevious value: -"Routing mode: glm = Zhipu GLM-5/GLM-5-Turbo ($0.001/call, great for coding), coding = GLM-5 + code models, cheap = GLM-5 + budget, free = NVIDIA only (ignored if model specified)"New value: +"Routing mode: powerful/reasoning = frontier models (Opus 4.8, GPT-5.6-sol, Kimi K3), coding = code-specialized, glm = Zhipu GLM (cheap, great for coding), cheap = budget models, free = NVIDIA only (ignored if model specified)" - changed
Input schema / properties / model / descriptionPrevious value: -"Specific model ID (e.g., 'zai/glm-5', 'openai/o3')"New value: +"Specific model ID (e.g., 'moonshot/kimi-k3', 'openai/gpt-5.6-sol', 'zai/glm-5')"
- Changed
blockrun_markets1 field changed- changed
Input schema / properties / params / descriptionPrevious value: -"Query parameters for GET requests (e.g. { limit: '20', active: 'true' })"New value: +"Query parameters for GET requests (e.g. markets/search uses { q: 'Bitcoin', status: 'open', venue: 'polymarket', limit: '20' })"
- Added
blockrun_polymarket_read
4 tool updates
v0.31.6- Changed
blockrun_chat2 fields changed- removed
Input schema / properties / routingRemoved value: -{ - "description": "Set to \"smart\" to auto-select the optimal model via ClawRouter (14-dimension AI routing)", - "enum": [ - "smart" - ], - "type": "string" -} - removed
Input schema / properties / routing_profileRemoved value: -{ - "default": "auto", - "description": "Cost/quality profile for ClawRouter: \"eco\" (budget), \"auto\" (balanced, default), \"premium\" (best quality). Note: \"free\" maps to \"auto\" (the SDK dropped the free profile) and still settles a PAID model — for zero-cost generation use mode:\"free\" or model:\"nvidia/...\". Only applies when routing:\"smart\".", - "enum": [ - "free", - "eco", - "auto", - "premium" - ], - "type": "string" -}
- Added
blockrun_polymarket - Changed
blockrun_surf2 fields changed- changed
Input schema / properties / body / descriptionPrevious value: -"JSON body for POST endpoints. Provide for: onchain/query, onchain/sql, chat/completions. When set, the call is sent as POST; otherwise GET with params."New value: +"JSON body for POST endpoints. Provide for: onchain/query, onchain/sql. When set, the call is sent as POST; otherwise GET with params." - changed
Input schema / properties / path / descriptionPrevious value: -"Endpoint path under /v1/surf/, e.g. 'market/price', 'prediction-market/polymarket/ranking', 'wallet/detail', 'onchain/sql', 'chat/completions'"New value: +"Endpoint path under /v1/surf/, e.g. 'market/price', 'prediction-market/polymarket/ranking', 'wallet/detail', 'onchain/sql'"
- Changed
blockrun_wallet1 field changed- changed
Input schema / properties / action / enumPrevious value: -[ - "status", - "setup", - "qr", - "chain", - "budget", - "delegate", - "revoke", - "report" -]New value: +[ + "status", + "deposit", + "setup", + "qr", + "chain", + "budget", + "delegate", + "revoke", + "report" +]
3 tool updates
v0.25.2- Changed
blockrun_chat5 fields changed- changed
Input schema / properties / routing_profile / descriptionPrevious value: -"Cost/quality profile for ClawRouter: \"free\" (zero cost NVIDIA), \"eco\" (budget), \"auto\" (balanced, default), \"premium\" (best quality) (only applies when routing: \"smart\")"New value: +"Cost/quality profile for ClawRouter: \"eco\" (budget), \"auto\" (balanced, default), \"premium\" (best quality). Note: \"free\" maps to \"auto\" (the SDK dropped the free profile) and still settles a PAID model — for zero-cost generation use mode:\"free\" or model:\"nvidia/...\". Only applies when routing:\"smart\"." - changed
Input schema / properties / thinking / properties / budget_tokens / descriptionPrevious value: -"Tokens Claude may spend reasoning before answering. max_tokens is auto-raised above this if needed."New value: +"Tokens Claude may spend reasoning before answering (1024–100000; Anthropic requires ≥1024). max_tokens is auto-raised above this if needed; counts toward the budget reserve." - added
Input schema / properties / thinking / properties / budget_tokens / maximumAdded value: +100000 - changed
Input schema / properties / thinking / properties / budget_tokens / minimumPrevious value: -1New value: +1024 - changed
Input schema / properties / thinking / properties / budget_tokens / typePrevious value: -"number"New value: +"integer"
- Changed
blockrun_image5 fields changed- added
Input schema / properties / image / anyOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "maxItems": 4, + "minItems": 1, + "type": "array" + } +] - changed
Input schema / properties / image / descriptionPrevious value: -"Source image for edit action: base64-encoded image or URL"New value: +"Source image(s) for edit action: a base64 data URI, an http(s) URL, or a local file path (auto-encoded to a data URI) — or an array of 2–4 to fuse into one render (e.g. subject + layout guide, or reference + brand logo). openai/* accepts up to 4, google/* up to 3; a mask cannot be combined with multiple images." - removed
Input schema / properties / image / typeRemoved value: -"string" - added
Input schema / properties / inlineAdded value: +{ + "description": "Return a small inline image preview (thumbnail) the client can render in-conversation, in addition to the full-resolution URL. Defaults to the BLOCKRUN_INLINE_IMAGES env setting (off unless set). Rich clients (e.g. the VS Code extension) render it; plain terminals ignore it. Off keeps responses lightweight.", + "type": "boolean" +} - added
Input schema / properties / maskAdded value: +{ + "description": "Inpaint mask for edit action (openai/gpt-image-* only): a base64 data URI, http(s) URL, or local file path. Transparent areas of the mask are regenerated. Cannot be combined with multiple source images.", + "type": "string" +}
- Changed
blockrun_video4 fields changed- added
Input schema / properties / aspect_ratioAdded value: +{ + "description": "Seedance only: output aspect ratio, e.g. '9:16' for vertical/mobile, '16:9' for landscape. Defaults to the model's own default. Ignored by xAI/Sora.", + "enum": [ + "adaptive", + "16:9", + "9:16", + "1:1", + "4:3", + "3:4", + "21:9", + "9:21" + ], + "type": "string" +} - added
Input schema / properties / generate_audioAdded value: +{ + "description": "Seedance only: whether to generate a synced audio track. Defaults ON for text-to-video and OFF for image/RealFace-conditioned. The auto-generated audio is occasionally rejected by upstream moderation ('output audio may contain sensitive information') even for benign prompts — pass false to skip audio and avoid that failure. Ignored by xAI/Sora.", + "type": "boolean" +} - added
Input schema / properties / last_frame_urlAdded value: +{ + "description": "Seedance only: first-and-last-frame interpolation. A second image URL that seeds the FINAL frame so the model tweens from image_url (first frame) → last_frame_url (last frame). Requires image_url; mutually exclusive with real_face_asset_id. Priced as image-to-video.", + "format": "uri", + "type": "string" +} - added
Input schema / properties / resolutionAdded value: +{ + "description": "Seedance only: output resolution. Defaults to 720p. Higher resolutions cost more (token-priced upstream) — the final price is set by the 402 challenge, so the up-front estimate may understate 1080p/4K. Ignored by xAI/Sora.", + "enum": [ + "360p", + "480p", + "540p", + "720p", + "1080p", + "1K", + "2K", + "4K" + ], + "type": "string" +}
6 tool updates
v0.22.0- Changed
blockrun_chat7 fields changed- changed
Input schema / properties / messages / descriptionPrevious value: -"Conversation history for multi-turn context. When provided, 'message' is appended as the final user turn. Use with explicit 'model' param (defaults to 'openai/gpt-5.4' if not specified). Note: if you include a role:'system' entry in messages[], do not also pass the system param to avoid duplicate system messages."New value: +"Conversation history for multi-turn context. When provided, 'message' is appended as the final user turn. Use with explicit 'model' param (defaults to 'openai/gpt-5.5' if not specified). Note: if you include a role:'system' entry in messages[], do not also pass the system param to avoid duplicate system messages." - added
Input schema / properties / messages / items / properties / content / anyOfAdded value: +[ + { + "type": "string" + }, + { + "items": { + "anyOf": [ + { + "properties": { + "text": { + "type": "string" + }, + "type": { + "const": "text", + "type": "string" + } + }, + "required": [ + "type", + "text" + ], + "type": "object" + }, + { + "properties": { + "image_url": { + "properties": { + "url": { + "description": "https URL or data:<mime>;base64,<...> URI", + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + "type": { + "const": "image_url", + "type": "string" + } + }, + "required": [ + "type", + "image_url" + ], + "type": "object" + } + ] + }, + "type": "array" + } +] - added
Input schema / properties / messages / items / properties / content / descriptionAdded value: +"Plain text, or an array of parts for multimodal input (text + image_url). Images are honored on the native anthropic/claude-* path." - removed
Input schema / properties / messages / items / properties / content / typeRemoved value: -"string" - added
Input schema / properties / response_formatAdded value: +{ + "description": "Set to 'json_object' to force valid JSON output (no markdown fences). Works across all providers.", + "enum": [ + "text", + "json_object" + ], + "type": "string" +} - added
Input schema / properties / stopAdded value: +{ + "description": "Up to 4 stop sequences; generation halts when any is produced", + "items": { + "type": "string" + }, + "maxItems": 4, + "type": "array" +} - added
Input schema / properties / thinkingAdded value: +{ + "description": "Anthropic extended thinking. Only honored for anthropic/claude-* models — these go direct to the native /v1/messages endpoint and the response includes verbatim type:'thinking' blocks with their original signature. Ignored for non-Claude models (no native thinking channel).", + "properties": { + "budget_tokens": { + "description": "Tokens Claude may spend reasoning before answering. max_tokens is auto-raised above this if needed.", + "minimum": 1, + "type": "number" + }, + "type": { + "const": "enabled", + "type": "string" + } + }, + "required": [ + "type", + "budget_tokens" + ], + "type": "object" +}
- Added
blockrun_defi - Changed
blockrun_image4 fields changed- changed
Input schema / properties / model / descriptionPrevious value: -"Model to use (default: dall-e-3 for generate, gpt-image-2 for edit). xai/grok-imagine-image is stylized and fast; xai/grok-imagine-image-pro is higher quality; gpt-image-2 is the newest edit-capable model with stronger instruction following."New value: +"Model to use (default: openai/gpt-image-2 for both generate and edit). gpt-image-2 renders on-image text best; nano-banana-pro for 4K photorealism; cogview-4 / grok-imagine-image for cheap drafts." - changed
Input schema / properties / model / enumPrevious value: -[ - "zai/cogview-4", - "openai/dall-e-3", - "together/flux-schnell", - "google/nano-banana", - "openai/gpt-image-1", - "openai/gpt-image-2", - "xai/grok-imagine-image", - "xai/grok-imagine-image-pro" -]New value: +[ + "zai/cogview-4", + "google/nano-banana", + "google/nano-banana-pro", + "openai/gpt-image-1", + "openai/gpt-image-2", + "xai/grok-imagine-image", + "xai/grok-imagine-image-pro" +] - added
Input schema / properties / size / descriptionAdded value: +"Image size. Common values: 1024x1024 (all models), 1536x1024 / 1024x1536 (gpt-image-*), 2048x2048 / 4096x4096 (nano-banana-pro)" - removed
Input schema / properties / size / enumRemoved value: -[ - "1024x1024", - "1792x1024", - "1024x1792" -]
- Changed
blockrun_realface4 fields changed- changed
Input schema / properties / action / enumPrevious value: -[ - "init", - "status", - "enroll", - "list" -]New value: +[ + "init", + "status", + "enroll", + "portrait", + "list" +] - changed
Input schema / properties / group_id / descriptionPrevious value: -"Asset-group id from init (required for status and enroll; pass to init to refresh an expired H5 link)."New value: +"Asset-group id from init (required for status and enroll; pass to init to refresh an expired H5 link). Not used by portrait." - changed
Input schema / properties / image_url / descriptionPrevious value: -"Public HTTPS URL to a clear front-facing face photo (JPG/PNG/WEBP, ≤10MB). Required for enroll."New value: +"Public HTTPS URL to a clear front-facing face image (JPG/PNG/WEBP, ≤10MB). Required for enroll and portrait." - changed
Input schema / properties / name / descriptionPrevious value: -"Display name for the person (required for init and enroll)."New value: +"Display name for the person/character (required for init, enroll, and portrait)."
- Added
blockrun_rpc - Added
blockrun_speech
15 tool updates
v0.16.2- First observed
blockrun_chat - First observed
blockrun_dex - First observed
blockrun_exa - First observed
blockrun_image - First observed
blockrun_markets - First observed
blockrun_modal - First observed
blockrun_models - First observed
blockrun_music - First observed
blockrun_phone - First observed
blockrun_price - First observed
blockrun_realface - First observed
blockrun_search - First observed
blockrun_surf - First observed
blockrun_video - First observed
blockrun_wallet
TDQS
Most tools target distinct domains (AI generation, search, crypto data, trading, phone), but there is some overlap: blockrun_search and blockrun_exa both offer web search, and blockrun_markets, blockrun_surf, blockrun_dex, and blockrun_price all provide market data. The descriptions are detailed and cross-reference alternatives, which mitigates confusion.
All tools follow a consistent blockrun_<service> pattern in lowercase snake_case. The only deviation is blockrun_polymarket_read vs blockrun_polymarket, but the _read suffix is a clear and consistent modifier indicating read-only access, so the naming remains predictable.
20 tools is on the heavier side, but the server spans a wide range of capabilities—AI generation, search, financial data, trading, phone services, sandboxing, and wallet management—so each tool earns its place. No tool feels redundant or unnecessary given the platform's broad scope.
The toolkit provides full lifecycle coverage for its domains: wallet and budget management, Polymarket read and write operations, the complete RealFace enrollment flow, multi-model AI generation, and multiple complementary data query paths. There are no obvious dead ends or missing critical operations for the platform's purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Give your agent live data from Twitter, Reddit, the web and GitHub. No API keys, no scraping stack.
Market data and web intelligence for AI agents, paid per call in USDC on Base via x402.
Real-time data feeds for AI agents with USDC micropayments on Base for premium tools.
Pay-per-call data APIs for AI agents. USDC on Base via x402. 33 tools, no signup.
Related MCP Servers
- AlicenseAqualityFmaintenanceEnables Claude to access real-time crypto prices, forex rates, and market sentiment data through free public APIs with no keys required.53MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to access real-time financial data including crypto, equities, on-chain, prediction markets, and macro via a single API key.-
- AlicenseNot gradedqualityBmaintenanceProvides live data API for AI agents with 51 REST endpoints across finance, travel, weather, news, and more, using USDC micropayments without API keys.115MIT

Stelar Signals MCPofficial
AlicenseAqualityBmaintenanceEnables AI agents to access crypto market signals including regime, sentiment, price, risk, and text tools like summarization and fact-checking, backed by a live production-grade classifier.6622MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/BlockRunAI/blockrun-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server