{
  "id": "surf.onchain.schema",
  "object": "tool",
  "name": "On-Chain Table Schema",
  "summary": "List the on-chain SQL tables and their columns — call this before writing a query for /onchain/query or /onchain/sql.",
  "description": "List the on-chain SQL tables and their columns — call this before writing a query for /onchain/query or /onchain/sql. 111 tables in the agent database: per-chain dex_trades, transfers, prices, TVL and fees (Ethereum, Base, Arbitrum, BSC, Tron, HyperEVM, Tempo, Robinhood), Polymarket and Kalshi trades and markets, Hyperliquid perps, whale and bridge aggregates. Pass table=<name> for one table's physical metadata (partition key, row count, bytes). Note: this call costs the same as running a query — cache the result rather than re-fetching per query. Refresh: ~24h.\n\nRaw surf#onchain/schema endpoint: input is { body, queryParams, pathParams } as the provider documents them (https://docs.asksurf.ai/data-api/onchain/schema).",
  "category": "lookup",
  "hosted_by": "Surf",
  "runtime": "partner",
  "side_effects": false,
  "status": "live",
  "credits": 0,
  "price": null,
  "providers": [
    {
      "id": "surf",
      "name": "Surf",
      "price": null,
      "own_key_only": true
    }
  ],
  "mcp_name": "surf_onchain_schema",
  "input_schema": {
    "type": "object",
    "properties": {
      "queryParams": {
        "type": "object",
        "properties": {
          "table": {
            "type": "string",
            "minLength": 1,
            "description": "Optional logical table name from the agent database. When set, the response adds bounded physical metadata: engine, partition key, sorting key, primary key, row estimate, and compressed bytes. Example: polymarket_trades."
          }
        },
        "additionalProperties": false
      }
    },
    "required": [],
    "additionalProperties": false
  },
  "kind": "endpoint"
}