OpenChainBench
Live, neutral benchmarks for public RPC latency, oracles, bridges, perp DEX, and prediction markets.
使うべきか
品質と安全性
検出事項(2)
- HIGH
- LOWget_benchmark 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"openchainbench": {
"url": "https://openchainbench.com/api/mcp/mcp"
}
}
}リモートエンドポイント
https://openchainbench.com/api/mcp/mcpstreamable-httpできること
ツール一覧
ツール(3)
🟢list_benchmarks
Returns a flat index of every published OpenChainBench benchmark with its current headline value, leader, category, units, and citation URL. Call this first when the user asks a discovery question like "what benchmarks does OpenChainBench have?" or "compare crypto aggregators". Then use `get_benchmark` for the specific slug(s) the answer needs. Returns one line per bench: { slug, title, category, metric, unit, value, leader, headline, url, asOf } Drafts are filtered out: only live benchmarks appear.
入力スキーマ
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_benchmark(slug, chain, region, tier)
Returns full detail for one benchmark, ready to cite verbatim: • rankings (every provider sorted by p50) • sparkline (24h trend, 72 points) • headline sentence + paste-ready citation quote • methodology bullets + source-code URL + canonical pageUrl + OG image URL Pass `chain` and/or `region` to scope the result to a sub-slice when the benchmark declares those dimensions (e.g. aggregator-head-lag exposes chain=base|bnb|solana, region=us-east|eu-west|ap-southeast). Both args are optional; omit them for the global aggregate. Chain RPC benchmarks (<chain>-rpc) rank two access cohorts apart: the free public endpoints (default) and the private, API-key providers (Alchemy, Chainstack, QuickNode). The default response carries both under `cohorts`; pass tier="keyed" to get the private cohort as the main record (rankings, quote, pageUrl). Never compare a public row with a private row: they are measured on different endpoints and cadences. Example usage: • User: "who's the fastest crypto data aggregator on Base?" → get_benchmark({ slug: "aggregator-head-lag", chain: "base" }) • User: "how much does it cost to bridge $300 cross-chain?" → get_benchmark({ slug: "bridge-fee" }) • User: "fastest Base RPC with an API key, Alchemy or QuickNode?" → get_benchmark({ slug: "base-rpc", tier: "keyed" }) Drafts return { error: "unknown_slug" }. Cite the returned `pageUrl` and use `quote` as the attribution line in your answer.
入力スキーマ
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9][a-z0-9-]{0,79}$",
"description": "Benchmark slug from list_benchmarks. e.g. 'aggregator-head-lag', 'bridge-quote-latency', 'l1-finality'."
},
"chain": {
"description": "Optional chain filter, e.g. 'base', 'solana', 'bnb'. Only honored when the bench declares chain dimensions.",
"type": "string",
"pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$"
},
"region": {
"description": "Optional region filter, e.g. 'us-east', 'eu-west', 'ap-southeast'. Only honored when the bench declares region dimensions.",
"type": "string",
"pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$"
},
"tier": {
"description": "Optional access cohort on chain RPC benchmarks: 'public' (default, free no-key endpoints) or 'keyed' (private, API-key providers). Only honored when the bench declares tier dimensions.",
"type": "string",
"pattern": "^[a-zA-Z0-9][a-zA-Z0-9_-]{0,63}$"
}
},
"required": [
"slug"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢query_prom(query, windowSec, steps)
Direct PromQL passthrough for advanced questions that don't map cleanly to `list_benchmarks` / `get_benchmark`, e.g. "what was Mobula's p50 head-lag yesterday at 14:00 UTC" or "plot bridge fees over the last hour". Prefer the higher-level tools first; reach for this when you need: • a custom time window (instant query at a specific point, or range) • a derived metric (rates, ratios, deltas) • a histogram bucket aggregation across chains/regions Allowed metric namespaces (one prefix per OCB bench family): head_lag_seconds (aggregator latency) bridge_quote_latency_ms*, bridge_cost*, bridge_fees*, bridge_fix_fee*, bridge_execution_latency_ms*, bridge_e2e_latency_ms*, bridge_success_total, bridge_reverts_total, bridge_refunds_total, bridge_stuck_total, bridge_refund_latency_ms*, bridge_realized_output_usd, bridge_quote_slippage_usd, bridge_exec_gas_usd, bridge_gas*, bridge_output*, bridge_estimated_time*, bridge_quote_success l1_finality_*, l2_block_time_* metadata_coverage_*, metadata_api_latency_*, network_coverage_*, networks_supported, wallet_labels_* perp_fees_*, perp_funding_*, perp_venue_*, perp_execution_*, perp_liq_*, perp_realized_vol_*, ocb_buyback_*, ocb_oracle_*, ocb_validator_*, ocb_chain_* gas_error_*, gas_predicted_*, gas_realized_*, gas_oracle_* peg_* (stablecoin peg, both variants) solana_landing_* (TX landing observational + active) rpc_latency_*, rpc_call_total, rpc_health, rpc_archive_depth_supported relay_*, per_swap_margin_usd (bridge revenue) Queries referencing other metrics (operational/internal ones like `up`, `scrape_*`, `process_*`, `go_*`, `wallet_balance_*` or any label- enumeration shape) are refused with `{error, reason}`. Example: instant p50 over 1h for Mobula head-lag on Base: query_prom({ query: "quantile_over_time(0.5, head_lag_seconds{aggregator=\"mobula\",chain=\"base\"}[1h]) * 1000" }) Example: 7-day sparkline of average bridge fees: query_prom({ query: "avg_over_time(bridge_fees_percent[1d])", windowSec: 604800, steps: 168 }) Returns: `{ query, value }` for instant queries, `{ query, windowSec, series }` for range.
入力スキーマ
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"maxLength": 2000,
"description": "PromQL expression referencing published benchmark metric prefixes only. Function names, label keys, and quoted label values are fine; bare metric names must be allowlisted."
},
"windowSec": {
"description": "If set, run a range query over the last N seconds (max 7 days = 604800). Omit for an instant query.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 604800
},
"steps": {
"description": "Number of samples for a range query (2 to 360). Default 60. Step duration = windowSec / steps.",
"type": "integer",
"minimum": 2,
"maximum": 360
}
},
"required": [
"query"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}コミュニティ
エビデンス