Skip to main content
Glama
BlockRunAI

BlockRun MCP

Official
by BlockRunAI

         

npm version npm downloads GitHub stars Publish TypeScript Node License: MIT

MCP x402 Protocol Base Network Solana Telegram

claude mcp add blockrun -s user -- npx -y @blockrun/mcp@latest

BlockRun 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 source20 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, crypto blockrun_price, blockrun_models) costs $0.

  • Reads and acts — most tools deliver data; blockrun_polymarket places real, confirm-gated trades.

  • Human-in-the-loop payments — turn on BLOCKRUN_CONFIRM_SPEND=on and 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 into BLOCKRUN_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/npx on 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@latest

See 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

claude mcp add blockrun -s user -- npx -y @blockrun/mcp@latest

Codex CLI

✅ Verified · 0.142.5 · 2026-08-30

codex mcp add blockrun -- npx -y @blockrun/mcp@latest

OpenClaw

🟡 In use · 2026.5.2 (from a local build; the npx form below is not yet verified)

— not documented

openclaw mcp set blockrun '{"command":"npx","args":["-y","@blockrun/mcp@latest"]}'

Claude Desktop

📝 Documented

⚠️ renders; OK reports cancel → proceeds

claude_desktop_config.json — JSON below

Cursor

📝 Documented

~/.cursor/mcp.json — JSON below

VS Code (Copilot)

📝 Documented

code --add-mcp '{"name":"blockrun","command":"npx","args":["-y","@blockrun/mcp@latest"]}'

Gemini CLI

📝 Documented

gemini mcp add -s user blockrun npx -y @blockrun/mcp@latest

Windsurf

📝 Documented

~/.codeium/windsurf/mcp_config.json — JSON below

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

claude_desktop_config.json (Settings → Developer → Edit Config)

Cursor

~/.cursor/mcp.json · Windows %APPDATA%\Cursor\mcp.json

Windsurf

~/.codeium/windsurf/mcp_config.json · Linux ~/.config/.codeium/windsurf/mcp_config.json · Windows %APPDATA%\Codeium\windsurf\mcp_config.json

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

full (default)

everything (20 tools)

media

wallet models image video realface music speech

trading

wallet price dex markets surf defi rpc polymarket_read polymarket

research

wallet models chat search exa surf

chat

wallet models chat

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 trading

An 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

full (default)

20

12,900

trading

9

5,554

media

7

5,436

research

6

3,024

chat

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-server

It 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/skills

skills 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 via blockrun_polymarket — one self-custody wallet, gasless · on-chain tx 0x7ca8…)


Tools

Tool

Data source

Cost

blockrun_chat

71 LLMs (GPT, Claude, Gemini, DeepSeek, Kimi K3, GLM, NVIDIA free tier, …) with mode tier routing

per token

blockrun_image

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

blockrun_video

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

blockrun_realface

Enroll a real person (phone liveness) or AI character (Virtual Portrait) as a ta_xxxx asset for Seedance 2.0 / 2.0-fast / 2.0-mini video (not 2.5)

free; $0.01 to enroll

blockrun_music

MiniMax music generation

per track

blockrun_speech

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

blockrun_price

Pyth-backed realtime + OHLC — crypto / FX / commodity (free), 12 stock markets (paid)

free or $0.001/call

blockrun_markets

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

blockrun_polymarket_read

Read-only Polymarket positions/open orders plus executable live order previews, separated for MCP clients that enforce tool safety annotations

free

blockrun_polymarket

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

blockrun_surf

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

blockrun_exa

Neural web search (Exa) — research, competitors, papers, URL content

$0.01/query

blockrun_search

Grok Live Search — web + X/Twitter + news with citations

$0.025 × max_results

blockrun_dex

Live DEX prices via DexScreener

free

blockrun_rpc

Raw JSON-RPC on 40 chains (Ethereum, Base, Solana, Bitcoin, Sui, NEAR, …) via Tatum

$0.002/call

blockrun_defi

DefiLlama — protocol TVL, chain TVL, yield pools (APY), token prices

$0.001–0.005/call

blockrun_modal

Isolated code execution in a BlockRun-hosted Modal sandbox — disposable container, optional GPU (T4 → H100)

$0.01 create; $0.001/op

blockrun_phone

Outbound AI voice calls (Bland) + wallet-owned US/CA numbers (Twilio), carrier + fraud lookups

$0.54/call; $5/number

blockrun_models

Live catalogue of every LLM/image/video/music model + pricing

free

blockrun_wallet

Balance, spending, agent budgets, setup QR, chain switch

free


Key use cases

  1. Prediction-market consensus"Polymarket's odds for the next Fed decision?"blockrun_markets

  2. Signal → trade (the full loop, self-custody)"If 'hold' is under 30%, put $2 on Yes."blockrun_markets reads, blockrun_polymarket action:"buy" places. Gasless, confirm-gated.

  3. On-chain forensics"This wallet — what's it labeled, what does it hold, when did it whale up?"blockrun_surf

  4. Cited research"5 most-cited papers on speculative decoding, last 90 days."blockrun_exa

  5. Image generation with on-image text"Poster announcing GPT-5.5, retro-futuristic, headline 'NOW LIVE'."blockrun_image

  6. Give your agent a voice"Speak this with the sarah voice."blockrun_speech

  7. Voice phone-out"Call +1-415-… and confirm Friday at 3pm."blockrun_phone

  8. Multi-agent research, capped"Spawn 3 agents on competing L1 narratives. Cap each at $0.50."blockrun_wallet delegate × 3

  9. Cross-chain SQL"Top 10 tokens by DEX volume on Base, last 24h."blockrun_surf onchain/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 · withdraw

Safety 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/.session by default; a BLOCKRUN_WALLET_KEY env var or an existing agent wallet.json takes precedence — setup prints 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@latest

Client

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 call blockrun_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

bridge.base.org

$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 QR

Then 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_wallet first to check status, then action:"setup" for funding. Don't retry the failing tool blindly — the wallet is empty.

  • CRITICAL: blockrun_polymarket moves REAL user funds (pUSD on Polygon), separate from the x402 API budget. Never buy/sell/redeem with confirm:true unless the user explicitly approved that exact trade; without confirm you get a safe dry-run. Discover markets/token IDs with blockrun_markets first.

  • CRITICAL: blockrun_surf's 84-endpoint catalog is in skills/surf/SKILL.md; blockrun_markets' full endpoint list is in its tool description (worked examples in skills/prediction-markets/SKILL.md; live-demo workflow in skills/signal-to-trade-demo/SKILL.md). Browse those before guessing paths.

  • CRITICAL: blockrun_music and blockrun_video are 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 pass agent_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), and blockrun_models are $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

~/.blockrun/.session

auto-created on first run

EVM private key (0x…). File exists → use Base. Also the Polymarket signer (unless BLOCKRUN_WALLET_KEY or an agent wallet.json takes precedence).

BLOCKRUN_WALLET_KEY

unset

Env override of the EVM key — takes precedence over .session / wallet.json as the Base + Polymarket signer.

~/.blockrun/.chain

unset

Explicit chain preference: base or solana. Written only by blockrun_wallet action:"chain" — i.e. only when you choose.

~/.blockrun/.chain-auto

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 SOLANA_WALLET_KEY. Cleared whenever you set a chain explicitly.

~/.blockrun/.solana-session

not created

Solana private key. File exists → Solana unless .chain says base.

SOLANA_WALLET_KEY

unset

Env override of .solana-session. Set → use Solana.

BLOCKRUN_KEYCHAIN

auto

Key storage. auto — mirror the key into the OS keychain (macOS Keychain / Linux secret-tool) and keep the plaintext file, which stays authoritative so other BlockRun tools keep working and so replacing it still rotates your wallet. off — file only. strict — also delete ~/.blockrun/.session once a read-back proves the keychain holds the same key; this breaks other tools that read that file directly.

BLOCKRUN_MCP_PROFILE

full

Tool profile (media / trading / research / chat).

BLOCKRUN_BUDGET_LIMIT

unset (unlimited)

Hard USD cap on x402 spend for this server process. In-memory; resets on restart. Per-agent caps via blockrun_wallet action:"delegate".

BLOCKRUN_CONFIRM_SPEND

off

on — ask before every paid call via MCP elicitation. Details. Fails open on clients without elicitation.

BLOCKRUN_CONFIRM_THRESHOLD

0

Only ask for calls estimated above this many USD. Malformed values fall back to 0 (ask for everything), never to "off".

POLYMARKET_CLOB_HOST

BlockRun Finland relay

Geoblock egress for order placement — defaulted for you. Override to go direct (https://clob.polymarket.com) or your own egress.

POLYMARKET_MAX_BET_USD

25

Hard per-order notional cap.

POLYMARKET_MAX_SESSION_USD

unset

Optional cumulative per-process betting cap.

POLYMARKET_SIG_TYPE

3

3 = deposit wallet (POLY_1271, gasless); 0 = plain EOA mode.

POLYMARKET_CLOB_PROXY

unset

HTTPS proxy for Polymarket CLOB traffic only.

POLYMARKET_BOUNDED_APPROVALS

unset (unlimited)

Bound pUSD exchange allowances to this many dollars.

BLOCKRUN_BUILDER_CODE

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-debug skill carries every row below as symptom → cause → fix, plus the diagnostics it can run itself. blockrun-setup and blockrun-upgrade cover the other two halves. Install: npx -y @blockrun/mcp@latest skills install.

  • Insufficient balance / HTTP 402 after retry → Run blockrun_wallet action:"setup", send USDC on Base (or Solana).

  • blockrun doesn't connect / "MCP server failed" / spawn npx ENOENT → Almost always a PATH issue: Claude Code can't find node/npx on 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@latest

    Then restart Claude Code. Or pin absolute paths (which npx).

  • claude mcp list doesn't show blockrun → Check node -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. Use BLOCKRUN_BUDGET_LIMIT as the guard, or a client from the support table.

  • Polymarket: neg-risk ("winner") market buy fails, or redeem reverts, though setup shows ready → Re-run action:"setup" confirm:true once (grants the on-chain approvals a pre-upgrade deposit wallet may lack — including the collateral-adapter approvals redeem needs). 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

t.me/blockrunAI

🐦 X / Twitter

@BlockRunAI

📖 Documentation

blockrun.ai/docs

🐛 Issues

github.com/BlockRunAI/blockrun-mcp/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 tools
blockrun_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoRouting 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)
stopNoUp to 4 stop sequences; generation halts when any is produced
modelNoSpecific model ID (e.g., 'moonshot/kimi-k3', 'openai/gpt-5.6-sol', 'zai/glm-5')
systemNoOptional system prompt
messageYesYour message to the AI
agent_idNoAgent 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.
messagesNoConversation 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.
thinkingNoAnthropic 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_tokensNoMax tokens in response
temperatureNoCreativity 0-2
response_formatNoSet to 'json_object' to force valid JSON output (no markdown fences). Works across all providers.

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_defiA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesEndpoint under /v1/defillama/, e.g. 'protocols', 'protocol/aave-v3', 'chains', 'yields', 'prices/coingecko:ethereum'
agent_idNoAgent identifier for budget tracking and enforcement.

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_dexA
Read-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

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoFilter by chain (ethereum, solana, base, etc.)
queryNoSearch query (token name, symbol, or address)
tokenNoToken address for direct lookup
symbolNoToken symbol to search

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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_exaA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoJSON body for the call. Sent as POST. Required for all four endpoints.
pathYesEndpoint name under /v1/exa/, e.g. 'search', 'answer', 'contents', 'find-similar'
agent_idNoAgent identifier for budget tracking and enforcement.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
maskNoInpaint 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.
sizeNoImage size. Common values: 1024x1024 (all models), 1536x1024 / 1024x1536 (gpt-image-*), 2048x2048 / 4096x4096 (nano-banana-pro), 1280x720 / 2048x1024 / 2048x2048 / 2848x1600 (seedream-5-pro)1024x1024
imageNoSource 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.
modelNoModel 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.
actionNogenerate: create from text; edit: transform existing imagegenerate
inlineNoReturn 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.
promptYesImage description or edit instructions
qualityNostandard
agent_idNoAgent identifier for budget tracking and enforcement.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_marketsA
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoJSON body for POST queries (triggers pmQuery — most endpoints are GET)
pathYesEndpoint path, e.g. 'polymarket/events', 'kalshi/markets/KXBTC-25MAR14', 'polymarket/wallet/0xabc...', 'markets/search'
paramsNoQuery parameters for GET requests (e.g. markets/search uses { q: 'Bitcoin', status: 'open', venue: 'polymarket', limit: '20' })
agent_idNoAgent identifier for budget tracking and enforcement.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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_modalA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoJSON body. Sent as POST.
pathYesEndpoint under /v1/modal/, e.g. 'sandbox/create', 'sandbox/exec'
agent_idNoAgent identifier for budget tracking and enforcement.

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_modelsA
Read-only

List available AI models with pricing. Use to discover models and compare costs.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoFilter by categoryall
providerNoFilter by provider (e.g., 'openai', 'anthropic')

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoMusic model to useminimax/music-2.5+
lyricsNoCustom lyrics. Cannot be used with instrumental: true
promptYesMusic style, mood, or description. E.g. 'upbeat synthwave with neon pads', 'chill lo-fi beats', 'epic orchestral film score'
agent_idNoAgent identifier for budget tracking and enforcement.
instrumentalNoGenerate without vocals (default: true)

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_phoneA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoJSON body. Sent as POST. Omit for the free GET poll (voice/call/{call_id}).
pathYesEndpoint after /v1/. Use 'phone/...' for lookup + number ops, 'voice/call' for outbound AI calls, 'voice/call/{id}' (no body) to poll status.
agent_idNoAgent identifier for budget tracking and enforcement.

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_polymarketA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNocancel: cancel ALL open orders
sizeNoShares — required for limit orders and market sells
priceNoLimit price as probability (0–1). Omit for a market order.
actionYesOperation to perform
confirmNoMust be true to place orders / sign approvals / redeem. Omit for a dry-run preview.
outcomeNoOutcome label (e.g. 'Yes') — used with condition_id when token_id is omitted
agent_idNoTag for the session betting ledger (bets do NOT draw from the x402 API budget)
order_idNoOrder ID to cancel
token_idNoOutcome token ID (decimal ERC-1155 id from blockrun_markets clobTokenIds)
post_onlyNoMaker-only limit order (rejected if it would cross the book)
amount_usdNopUSD dollars — to spend (market buy) or to cash out (withdraw; default full balance)
expires_atNoUnix seconds expiry (GTD only, ≥ ~3 min in the future)
order_typeNoDefault: GTC for limit orders, FOK for market orders
to_addressNowithdraw: destination address on Base (default: your agent wallet)
condition_idNoMarket condition ID (0x…). With `outcome` it resolves token_id; required for redeem.

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_readA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNopreview: order side
sizeNopreview: shares for limits and market sells
priceNopreview: limit probability; omit for market order
actionYesRead-only operation
outcomeNopreview: outcome label used with condition_id
token_idNopreview: outcome token ID
post_onlyNopreview: maker-only limit order
amount_usdNopreview: pUSD to spend on a market buy
expires_atNopreview: GTD expiry in Unix seconds
order_typeNopreview: order type
condition_idNoorders: optional market condition ID filter

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_priceA
Read-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" }

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoHistory window end (unix seconds).
fromNoHistory window start (unix seconds).
limitNoMax items for list (default 100, max 2000).
queryNoFree-text filter for list.
actionYesWhich endpoint to hit: price, history, or list.
marketNoStock market code — required when category='stocks'.
symbolNoTicker (required for price+history). e.g. BTC-USD, AAPL, EUR-USD.
sessionNoEquity session hint (pre/post/on); ignored for non-equity.
agent_idNoAgent identifier for budget tracking and enforcement.
categoryYesMarket category.
resolutionNoBar resolution for history (default D).

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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:

  1. blockrun_realface action:"init" name:"Alice" → scan QR on phone, do liveness

  2. blockrun_realface action:"status" group_id:"legacy_rf_…" → repeat until ready_to_finalize:true

  3. blockrun_realface action:"enroll" name:"Alice" group_id:"legacy_rf_…" image_url:"https://…/alice.jpg" → ta_xxxx

  4. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoDisplay name for the person/character (required for init, enroll, and portrait).
actionYesWhat to do
agent_idNoAgent identifier for budget tracking and enforcement (enroll only).
group_idNoAsset-group id from init (required for status and enroll; pass to init to refresh an expired H5 link). Not used by portrait.
image_urlNoPublic HTTPS URL to a clear front-facing face image (JPG/PNG/WEBP, ≤10MB). Required for enroll and portrait.

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_rpcA
Destructive

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoFull JSON-RPC 2.0 body or an array of them (batch). Overrides method/params when set.
methodNoJSON-RPC method, e.g. 'eth_blockNumber', 'eth_call', 'getSlot' (Solana), 'getblockchaininfo' (Bitcoin). Required unless 'body' is set.
paramsNoJSON-RPC params array for the method, e.g. ['0xabc...', 'latest'].
networkYesChain key, e.g. 'ethereum', 'base', 'solana', 'bitcoin', 'arbitrum', 'polygon'. Unknown slugs pass through to the Tatum gateway.
agent_idNoAgent identifier for budget tracking and enforcement.

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputNospeak: text to synthesize. sound_effect: description of the sound, e.g. 'rain on a tin roof, distant thunder' (max 1000 chars).
modelNoSpeech 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
speedNoPlayback speed 0.7-1.2 (speak only)
voiceNoVoice alias (sarah, george, laura, charlie, river, roger, callum, harry) or raw ElevenLabs voice_id. Default: sarah.
actionNospeak: text-to-speech (default). sound_effect: generate a sound effect. voices: list voices (free).speak
agent_idNoAgent identifier for budget tracking and enforcement.
response_formatNoAudio formatmp3
duration_secondsNoSound effect length in seconds (sound_effect only; default: auto)
prompt_influenceNoHow literally to follow the prompt, 0-1 (sound_effect only)

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_surfA
Read-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

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoJSON body for POST endpoints. Provide for: onchain/query, onchain/sql. When set, the call is sent as POST; otherwise GET with params.
pathYesEndpoint path under /v1/surf/, e.g. 'market/price', 'prediction-market/polymarket/ranking', 'wallet/detail', 'onchain/sql'
paramsNoQuery parameters for GET endpoints, e.g. { symbol: 'BTC' } or { address: '0x...', chain: 'ethereum' }
agent_idNoAgent identifier for budget tracking and enforcement.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoVideo model to usexai/grok-imagine-video
promptYesText 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_idNoAgent identifier for budget tracking and enforcement.
image_urlNoOptional seed image URL for image-to-video generation
resolutionNoOutput 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_ratioNoOutput 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_audioNoSeedance 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_urlNoSeedance 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_secondsNoDuration 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_idNoBytePlus 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

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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):

  1. action:"chain" chain:"solana" → provisions + activates the Solana wallet

  2. 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:

  1. blockrun_wallet action:"delegate" agent_id:"worker-1" agent_limit:1.00

  2. Pass agent_id:"worker-1" to all blockrun_chat/search/etc calls for that agent

  3. blockrun_wallet action:"report" to audit spending

Do NOT call this for actual AI queries — use blockrun_chat for that.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainNoTarget chain for action='chain'. Omit to view the current active chain.
actionNoWhat to dostatus
agent_idNoAgent identifier for delegate/revoke/report actions
agent_limitNoBudget limit in USD for this agent (required for delegate action)
budget_actionNoBudget action (for action='budget')
budget_amountNoBudget limit in USD (for budget_action='set')

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 20 tool updatesv0.45.1
    • Changedblockrun_chat1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_defi1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_dex1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_exa1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_image1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_markets1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_modal1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_models1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_music1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_phone1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_polymarket1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_polymarket_read1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_price1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_realface1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_rpc1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_search1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_speech1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_surf1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_video1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
    • Changedblockrun_wallet1 field changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
  2. 4 tool updatesv0.40.1
    • Changedblockrun_chat1 field changed
      • changedInput schema / properties / mode / description
        Previous 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)"
    • Changedblockrun_music1 field changed
      • changedInput schema / properties / model / enum
        Previous value: -[
        -  "minimax/music-2.5+",
        -  "minimax/music-2.5"
        -]New value: +[
        +  "minimax/music-2.5+"
        +]
    • Changedblockrun_speech2 fields changed
      • changedInput schema / properties / model / description
        Previous 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."
      • changedInput schema / properties / model / enum
        Previous 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"
        +]
    • Changedblockrun_video5 fields changed
      • changedInput schema / properties / duration_seconds / description
        Previous 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."
      • changedInput schema / properties / last_frame_url / description
        Previous 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."
      • changedInput schema / properties / model / enum
        Previous 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"
        +]
      • changedInput schema / properties / real_face_asset_id / description
        Previous 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."
      • changedInput schema / properties / resolution / description
        Previous 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)."
  3. 1 tool updatev0.39.0
    • Changedblockrun_video8 fields changed
      • changedInput schema / properties / aspect_ratio / description
        Previous 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.)"
      • changedInput schema / properties / aspect_ratio / enum
        Previous 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"
        +]
      • changedInput schema / properties / duration_seconds / description
        Previous 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."
      • changedInput schema / properties / last_frame_url / description
        Previous 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."
      • changedInput schema / properties / model / enum
        Previous 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"
        +]
      • changedInput schema / properties / real_face_asset_id / description
        Previous 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."
      • changedInput schema / properties / resolution / description
        Previous 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)."
      • changedInput schema / properties / resolution / enum
        Previous value: -[
        -  "360p",
        -  "480p",
        -  "540p",
        -  "720p",
        -  "1080p",
        -  "1K",
        -  "2K",
        -  "4K"
        -]New value: +[
        +  "480p",
        +  "720p",
        +  "1080p",
        +  "4K"
        +]
  4. 1 tool updatev0.37.1
    • Changedblockrun_image2 fields changed
      • changedInput schema / properties / model / enum
        Previous 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"
        +]
      • changedInput schema / properties / size / description
        Previous 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)"
  5. 3 tool updatesv0.33.0
    • Changedblockrun_chat3 fields changed
      • changedInput schema / properties / messages / description
        Previous 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."
      • changedInput schema / properties / mode / description
        Previous 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)"
      • changedInput schema / properties / model / description
        Previous 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')"
    • Changedblockrun_markets1 field changed
      • changedInput schema / properties / params / description
        Previous 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' })"
    • Addedblockrun_polymarket_read
  6. 4 tool updatesv0.31.6
    • Changedblockrun_chat2 fields changed
      • removedInput schema / properties / routing
        Removed value: -{
        -  "description": "Set to \"smart\" to auto-select the optimal model via ClawRouter (14-dimension AI routing)",
        -  "enum": [
        -    "smart"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / routing_profile
        Removed 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"
        -}
    • Addedblockrun_polymarket
    • Changedblockrun_surf2 fields changed
      • changedInput schema / properties / body / description
        Previous 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."
      • changedInput schema / properties / path / description
        Previous 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'"
    • Changedblockrun_wallet1 field changed
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "status",
        -  "setup",
        -  "qr",
        -  "chain",
        -  "budget",
        -  "delegate",
        -  "revoke",
        -  "report"
        -]New value: +[
        +  "status",
        +  "deposit",
        +  "setup",
        +  "qr",
        +  "chain",
        +  "budget",
        +  "delegate",
        +  "revoke",
        +  "report"
        +]
  7. 3 tool updatesv0.25.2
    • Changedblockrun_chat5 fields changed
      • changedInput schema / properties / routing_profile / description
        Previous 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\"."
      • changedInput schema / properties / thinking / properties / budget_tokens / description
        Previous 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."
      • addedInput schema / properties / thinking / properties / budget_tokens / maximum
        Added value: +100000
      • changedInput schema / properties / thinking / properties / budget_tokens / minimum
        Previous value: -1New value: +1024
      • changedInput schema / properties / thinking / properties / budget_tokens / type
        Previous value: -"number"New value: +"integer"
    • Changedblockrun_image5 fields changed
      • addedInput schema / properties / image / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "maxItems": 4,
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +]
      • changedInput schema / properties / image / description
        Previous 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."
      • removedInput schema / properties / image / type
        Removed value: -"string"
      • addedInput schema / properties / inline
        Added 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"
        +}
      • addedInput schema / properties / mask
        Added 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"
        +}
    • Changedblockrun_video4 fields changed
      • addedInput schema / properties / aspect_ratio
        Added 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"
        +}
      • addedInput schema / properties / generate_audio
        Added 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"
        +}
      • addedInput schema / properties / last_frame_url
        Added 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"
        +}
      • addedInput schema / properties / resolution
        Added 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"
        +}
  8. 6 tool updatesv0.22.0
    • Changedblockrun_chat7 fields changed
      • changedInput schema / properties / messages / description
        Previous 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."
      • addedInput schema / properties / messages / items / properties / content / anyOf
        Added 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"
        +  }
        +]
      • addedInput schema / properties / messages / items / properties / content / description
        Added value: +"Plain text, or an array of parts for multimodal input (text + image_url). Images are honored on the native anthropic/claude-* path."
      • removedInput schema / properties / messages / items / properties / content / type
        Removed value: -"string"
      • addedInput schema / properties / response_format
        Added value: +{
        +  "description": "Set to 'json_object' to force valid JSON output (no markdown fences). Works across all providers.",
        +  "enum": [
        +    "text",
        +    "json_object"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / stop
        Added value: +{
        +  "description": "Up to 4 stop sequences; generation halts when any is produced",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 4,
        +  "type": "array"
        +}
      • addedInput schema / properties / thinking
        Added 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"
        +}
    • Addedblockrun_defi
    • Changedblockrun_image4 fields changed
      • changedInput schema / properties / model / description
        Previous 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."
      • changedInput schema / properties / model / enum
        Previous 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"
        +]
      • addedInput schema / properties / size / description
        Added value: +"Image size. Common values: 1024x1024 (all models), 1536x1024 / 1024x1536 (gpt-image-*), 2048x2048 / 4096x4096 (nano-banana-pro)"
      • removedInput schema / properties / size / enum
        Removed value: -[
        -  "1024x1024",
        -  "1792x1024",
        -  "1024x1792"
        -]
    • Changedblockrun_realface4 fields changed
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "init",
        -  "status",
        -  "enroll",
        -  "list"
        -]New value: +[
        +  "init",
        +  "status",
        +  "enroll",
        +  "portrait",
        +  "list"
        +]
      • changedInput schema / properties / group_id / description
        Previous 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."
      • changedInput schema / properties / image_url / description
        Previous 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."
      • changedInput schema / properties / name / description
        Previous 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)."
    • Addedblockrun_rpc
    • Addedblockrun_speech
  9. 15 tool updatesv0.16.2
    • First observedblockrun_chat
    • First observedblockrun_dex
    • First observedblockrun_exa
    • First observedblockrun_image
    • First observedblockrun_markets
    • First observedblockrun_modal
    • First observedblockrun_models
    • First observedblockrun_music
    • First observedblockrun_phone
    • First observedblockrun_price
    • First observedblockrun_realface
    • First observedblockrun_search
    • First observedblockrun_surf
    • First observedblockrun_video
    • First observedblockrun_wallet

TDQS

A4.4/5.0
Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness5/5

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

ActivityActive
ResponsivenessUnresponsive

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

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    Enables Claude to access real-time crypto prices, forex rates, and market sentiment data through free public APIs with no keys required.
    5
    3
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to access real-time financial data including crypto, equities, on-chain, prediction markets, and macro via a single API key.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides live data API for AI agents with 51 REST endpoints across finance, travel, weather, news, and more, using USDC micropayments without API keys.
    115
    MIT

Latest Blog Posts

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