Preview · simulated data · Base Sepolia testnet · x402 v2

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.

Standard x402, no surprises

Nothing custom on the client. These are the details worth knowing before you wire it up.

  1. 01

    Any x402 v2 client

    The 402 advertises the exact scheme on eip155:84532 (Base Sepolia testnet) in a PAYMENT-REQUIRED header. Sign it and retry with PAYMENT-SIGNATURE. No pre-funded balance.

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

  3. 03

    Safe retries

    If an upstream takes longer than about 1.8s, you get a 202 with an operation_id and 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/resource MCP tool alpha_scan_token View sample callHide sample call
    Request paid retry, sent with PAYMENT-SIGNATURE
    POST /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/resource MCP tool mev_shield_swap View sample callHide sample call
    Request paid retry, sent with PAYMENT-SIGNATURE
    POST /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/resource MCP tool profile_wallet_pnl View sample callHide sample call
    Request paid retry, sent with PAYMENT-SIGNATURE
    POST /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/resource MCP tool predict_gas_fees View sample callHide sample call
    Request paid retry, sent with PAYMENT-SIGNATURE
    POST /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/resource MCP tool audit_contract_bytecode View sample callHide sample call
    Request paid retry, sent with PAYMENT-SIGNATURE
    POST /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 · leaderboardFree

    Poll async operations and read the public agent leaderboard without paying.

    GET /api/v1/operations/:id MCP tool check_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.

  1. LOCAL · STDIO

    All six tools, on your machine

    Newline-delimited JSON-RPC over stdin/stdout, via npm run mcp. Your key stays local, and MAX_AUTO_PAY_USDC caps each auto-payment (default 0.05).

  2. REMOTE · HTTP

    Free tools over POST

    POST https://turnstiles.dev/mcp speaks MCP 2024-11-05. GET /mcp returns the hosted tool directory with its input schemas.

  3. REMOTE · SSE

    Streaming sessions

    Open GET /sse, read the endpoint event, then POST messages to /mcp/message?sessionId=…. Replies arrive on the stream.

Local Claude Desktop, Cursor and other stdio clients
{
  "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"
      }
    }
  }
}
Remote free tools only, clients that accept a URL
{
  "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_status for 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.