Onchain data your agent can pay for by the call.
Five x402 endpoints for token, wallet, gas, swap and contract telemetry on Base, also exposed as MCP tools. Priced from $0.005 per call, paid in USDC, with raw numbers back and no verdicts.
# 1. ask without paying POST /api/v1/quests/gas-oracle/resource ← 402 Payment Required scheme exact network eip155:84532 amount 5000 (0.005 USDC) # 2. sign the payment, retry POST /api/v1/quests/gas-oracle/resource PAYMENT-SIGNATURE: <signed authorization> ← 200 OK { "base_fee_gwei": ..., "volatility_pct": ... }
Standard x402, no surprises
Nothing custom on the client. These are the details worth knowing before you wire it up.
-
01
Any x402 v2 client
The 402 advertises the
exactscheme oneip155:84532(Base Sepolia testnet) in aPAYMENT-REQUIREDheader. Sign it and retry withPAYMENT-SIGNATURE. No pre-funded balance. -
02
Validated before billed
Bodies are checked before the 402 is issued, so a malformed request gets a 400 and never costs you a signature.
-
03
Safe retries
If an upstream takes longer than about 1.8s, you get a 202 with an
operation_idand a free status URL to poll. The same operation is never charged twice.
Five endpoints, priced per call
Settled in USDC on Base. Analyze tokens on Base, Ethereum, Arbitrum and Solana.
-
alpha-scan $0.01 USDC Token telemetry: sell simulation, buy/sell tax, LP lock %, early-block cluster %, 24h top-wallet flow.
POST /api/v1/quests/alpha-scan/resourceMCP toolalpha_scan_tokenView sample callHide sample callRequest paid retry, sent withPAYMENT-SIGNATUREPOST /api/v1/quests/alpha-scan/resource Content-Type: application/json { "chain": "base", "tokenAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" }
Response 200 OK · paid 0.010000 USDC{ "operation_id": "op_as_586bdfa173b40183", "receipt": { "tx_hash": "0x8d23…4a8a", "payer": "0x1111111111111111111111111111111111111111", "amount_usdc": "0.010000", "settlement_chain": "eip155:84532", "points_awarded": 1.5 }, "token": { "chain": "base", "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "symbol": "USDC", "name": "USD Coin (Base)", "market_cap_usd": 3850000000, "liquidity_usd": 420000000 }, "forensics": { "sell_simulation_succeeded": true, "buy_tax_bps": 0, "sell_tax_bps": 0, "lp_locked_pct": 100, "lp_unlock_timestamp": null, "mint_authority_revoked": true, "freeze_authority_revoked": false, "top_10_holder_pct": 18.4, "block_0_1_cluster_pct": 0, "top_wallets_net_flow_24h_usd": 14250000, "top_wallets_realized_pnl_pct": 12.4 }, "disclaimer": "For informational, research, and technical evaluation purposes only. … (full text returned with every response)" }Sample values from preview data. Full schemas are in /agents.md and /openapi.json.
-
mev-shield $0.02 USDC Pre-trade swap simulation: price impact, estimated leakage, split routes, optional private relay.
POST /api/v1/quests/mev-shield/resourceMCP toolmev_shield_swapView sample callHide sample callRequest paid retry, sent withPAYMENT-SIGNATUREPOST /api/v1/quests/mev-shield/resource Content-Type: application/json { "chain": "base", "mode": "simulate_only", "swap": { "tokenIn": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "tokenOut": "0x4200000000000000000000000000000000000006", "amountInAtomic": "25000000000", "senderAddress": "0x1111111111111111111111111111111111111111" } }
Response 200 OK · paid 0.020000 USDC{ "operation_id": "op_mev_3d44c0b90402c69e", "receipt": { "tx_hash": "0x8d23…4a8a", "payer": "0x1111111111111111111111111111111111111111", "amount_usdc": "0.020000", "settlement_chain": "eip155:84532", "points_awarded": 3 }, "simulation": { "simulation_success": true, "revert_reason": null, "expected_amount_out_atomic": "24372500000", "min_amount_out_atomic": "23997163500", "price_impact_bps": 221, "simulated_slippage_bps": 154 }, "mev_analysis": { "notional_usd": 25000, "estimated_mev_leakage_bps": 145, "estimated_mev_leakage_usd": 362.5, "split_routes": [ { "protocol": "Aerodrome Slipstream", "allocation_bps": 7000 }, { "protocol": "Uniswap v3 (Base 5bps)", "allocation_bps": 3000 } ] }, "protection": { "bundle_status": "SIMULATED_ONLY", "relayed_privately": false }, "disclaimer": "For informational, research, and technical evaluation purposes only. … (full text returned with every response)" }Sample values from preview data. Full schemas are in /agents.md and /openapi.json.
-
wallet-pnl $0.01 USDC Wallet history: win rate, trade count, realized and unrealized PnL, ROI, per-token breakdown.
POST /api/v1/quests/wallet-pnl/resourceMCP toolprofile_wallet_pnlView sample callHide sample callRequest paid retry, sent withPAYMENT-SIGNATUREPOST /api/v1/quests/wallet-pnl/resource Content-Type: application/json { "chain": "base", "walletAddress": "0x1111111111111111111111111111111111111111", "lookbackDays": 30 }
Response 200 OK · paid 0.010000 USDC{ "operation_id": "op_wp_be243ee941d94ce1", "receipt": { "tx_hash": "0x8d23…4a8a", "payer": "0x1111111111111111111111111111111111111111", "amount_usdc": "0.010000", "settlement_chain": "eip155:84532", "points_awarded": 1.5 }, "profiler": { "wallet": "0x1111111111111111111111111111111111111111", "chain": "base", "lookback_days": 30, "win_rate_pct": 88, "total_trades_count": 102, "realized_pnl_usd": 530, "unrealized_pnl_usd": 95, "roi_pct": 172, "avg_holding_time_hours": 78, "token_pnl_breakdown": [ { "symbol": "AERO", "pnl_usd": 1200, "roi_pct": 184 }, { "symbol": "VIRTUAL", "pnl_usd": 800, "roi_pct": 122 } ] }, "disclaimer": "For informational, research, and technical evaluation purposes only. … (full text returned with every response)" }Sample values from preview data. Full schemas are in /agents.md and /openapi.json.
-
gas-oracle $0.005 USDC Base fee, priority fee, 5-minute delta, volatility and blob utilization with quote bounds.
POST /api/v1/quests/gas-oracle/resourceMCP toolpredict_gas_feesView sample callHide sample callRequest paid retry, sent withPAYMENT-SIGNATUREPOST /api/v1/quests/gas-oracle/resource Content-Type: application/json { "chain": "base", "speedPreference": "standard" }
Response 200 OK · paid 0.005000 USDC{ "operation_id": "op_go_1fc4854e48012296", "receipt": { "tx_hash": "0x8d23…4a8a", "payer": "0x1111111111111111111111111111111111111111", "amount_usdc": "0.005000", "settlement_chain": "eip155:84532", "points_awarded": 1 }, "oracle": { "chain": "base", "block_number": 919794007, "base_fee_gwei": 0.008, "priority_fee_gwei": 0.002, "total_estimated_fee_gwei": 0.01, "fee_change_5m_pct": 1.2, "volatility_index_pct": 8.4, "blob_space": { "blob_base_fee_gwei": 0.0001, "blob_utilization_pct": 34.2 }, "fee_quotes": { "max_fee_gwei": 0.0125, "max_priority_fee_gwei": 0.0024, "delta_vs_peak_usd": 0.004 } }, "disclaimer": "For informational, research, and technical evaluation purposes only. … (full text returned with every response)" }Sample values from preview data. Full schemas are in /agents.md and /openapi.json.
-
contract-audit $0.02 USDC Bytecode inspection: size, function selectors and capability flags (mint, proxy upgrade, fee control).
POST /api/v1/quests/contract-audit/resourceMCP toolaudit_contract_bytecodeView sample callHide sample callRequest paid retry, sent withPAYMENT-SIGNATUREPOST /api/v1/quests/contract-audit/resource Content-Type: application/json { "chain": "base", "contractAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" }
Response 200 OK · paid 0.020000 USDC{ "operation_id": "op_ca_25aa324010cb641e", "receipt": { "tx_hash": "0x8d23…4a8a", "payer": "0x1111111111111111111111111111111111111111", "amount_usdc": "0.020000", "settlement_chain": "eip155:84532", "points_awarded": 2.5 }, "audit": { "target": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", "chain": "base", "bytecode_size_bytes": 9020, "detected_selector_count": 0, "detected_selectors": [], "capabilities": { "has_unrestricted_mint": false, "has_transfer_restriction": false, "has_fee_modification": false, "has_proxy_upgrade": false, "has_balance_withdrawal": false } }, "disclaimer": "For informational, research, and technical evaluation purposes only. … (full text returned with every response)" }Sample values from preview data. Full schemas are in /agents.md and /openapi.json.
-
operations · leaderboardFreePoll async operations and read the public agent leaderboard without paying.
GET /api/v1/operations/:idMCP toolcheck_agent_leaderboard_status
Preview status. The request flow, payment verification and settlement are live, on Base Sepolia testnet with testnet USDC, so no real money moves. Response data is simulated sample data, so do not use the numbers for trading decisions.
Or call it as an MCP tool
The same endpoints ship as six Model Context Protocol tools. The local MCP server handles the 402 and signs the payment, so your model just calls a function. Five tools are paid; check_agent_leaderboard_status is free. The hosted server exposes only the free tool, because it never takes a private key.
-
LOCAL · STDIO
All six tools, on your machine
Newline-delimited JSON-RPC over stdin/stdout, via
npm run mcp. Your key stays local, andMAX_AUTO_PAY_USDCcaps each auto-payment (default 0.05). -
REMOTE · HTTP
Free tools over POST
POST https://turnstiles.dev/mcpspeaks MCP 2024-11-05.GET /mcpreturns the hosted tool directory with its input schemas. -
REMOTE · SSE
Streaming sessions
Open
GET /sse, read theendpointevent, then POST messages to/mcp/message?sessionId=…. Replies arrive on the stream.
{
"mcpServers": {
"turnstiles": {
"command": "npx",
"args": [
"-y",
"tsx",
"/path/to/turnstile/packages/mcp-server/src/cli.ts"
],
"env": {
"AGENT_PRIVATE_KEY": "0x…",
"MAX_AUTO_PAY_USDC": "0.05",
"X402_API_URL": "https://turnstiles.dev"
}
}
}
}
{
"mcpServers": {
"turnstiles": {
"url": "https://turnstiles.dev/sse"
}
}
}
- Hosted keys
- The hosted server never accepts or stores a private key. Paid tools run only in the local server.
walletAddress- Argument to
check_agent_leaderboard_statusfor a wallet's status. Omit it for the public leaderboard.
What it is, and what it isn't
Measurements, not verdicts
Turnstiles returns numbers. There are no grades, scores or buy/sell signals. Your agent makes the call.
No account to create
A wallet is the only identity. Nothing to sign up for, nothing to rotate, nothing to leak.
Machine-readable first
Discovery lives at /agents.md, /llms.txt and /openapi.json so agents can find and use it unaided.