Skip to content
Eden Engine

DeFi Protocol Metrics Over Time (TVL, Fees, Volume, Revenue, Users)

omnial/project-defi-metrics

Given a DeFi protocol name or id, returns a time series of one metric -- total value locked, trading volume, fees, revenue, or active users -- one datapoint per day, optionally filtered to a date range and a single chain. Each call returns one page of datapoints plus pagination metadata (total available, current offset, whether more remain).

activeper callv2

Price

Up to $0.0164 per call; you pay what the call used

You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $5.00.

Use it

Your AI assistant does the work: it finds this tool, shows you the price first, runs it, and you are charged when the run finishes. There is nothing to set up for this tool in particular.

Connect once and your AI can find and run this tool, and any other it needs.

For developers: the calls your assistant makes
agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/project-defi-metrics" })

// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/project-defi-metrics" })

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/project-defi-metrics", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/project-defi-metrics", input: { /* ... */ } })

// 5. settle: the call is charged when it finishes, nothing to do

Not connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.

Pricing

Every charge this tool can incur.

ChargePrice
Per call
$0.0164
Updated
Oct 27, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "id"
      ]
    },
    {
      "required": [
        "q"
      ]
    }
  ],
  "properties": {
    "q": {
      "type": "string",
      "minLength": 1,
      "description": "Fuzzy entity name search. Only use when 'id' is not available. May return unexpected results for ambiguous names. Example: uniswap."
    },
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "Project UUID. PREFERRED — always use this when available from a previous response (e.g. project_id from /fund/portfolio or id from /search/project). Takes priority over q. Example: 25c6612a-395c-4974-94eb-3b5f9f4b2ed7."
    },
    "to": {
      "type": "string",
      "minLength": 1,
      "description": "End of time range. Accepts Unix seconds (1706745600) or date string (2024-02-01). Example: 2024-02-01."
    },
    "from": {
      "type": "string",
      "minLength": 1,
      "description": "Start of time range. Accepts Unix seconds (1704067200) or date string (2024-01-01). Example: 2024-01-01."
    },
    "chain": {
      "enum": [
        "ethereum",
        "polygon",
        "bsc",
        "arbitrum",
        "optimism",
        "base",
        "avalanche",
        "fantom",
        "solana"
      ],
      "type": "string",
      "description": "Filter by chain. Can be ethereum, polygon, bsc, arbitrum, optimism, base, avalanche, fantom, or solana. Example: ethereum."
    },
    "limit": {
      "type": "integer",
      "default": 20,
      "maximum": 100,
      "minimum": 1,
      "description": "Results per page. Example: 20. Defaults to 20."
    },
    "metric": {
      "enum": [
        "volume",
        "fee",
        "fees",
        "revenue",
        "tvl",
        "users"
      ],
      "type": "string",
      "default": "tvl",
      "description": "Metric to query. Can be volume, fees (or fee alias), revenue, tvl, or users. Defaults to tvl. Example: tvl. Defaults to \"tvl\"."
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "maximum": 9007199254740991,
      "minimum": 0,
      "description": "Pagination offset. Example: 0. Defaults to 0."
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "value": {
            "type": "number",
            "description": "The requested metric's value at that timestamp. USD-denominated for tvl/fees/revenue/volume (observed as a large float, e.g. ~7.0e9 for Uniswap TVL, ~8.3e4 for Uniswap Arbitrum daily fees); a plain count for users (not observed in testing, per the provider's documented metric list)."
          },
          "timestamp": {
            "type": "number",
            "description": "Unix seconds for the start of that day, e.g. 1788825600."
          }
        },
        "additionalProperties": true
      },
      "description": "One entry per day in the requested range, typically newest first. Page size is capped by the request's `limit` (default 20) -- see `meta` for how to page through a longer history."
    },
    "meta": {
      "type": "object",
      "properties": {
        "limit": {
          "type": "number",
          "description": "Echoes the request's `limit` (or its default)."
        },
        "total": {
          "type": "number",
          "description": "Total datapoints available across the full requested range, not just this page's length (2318 observed for Uniswap TVL against a 20-entry page)."
        },
        "cached": {
          "type": "boolean",
          "description": "Whether the vendor served this response from its own cache."
        },
        "offset": {
          "type": "number",
          "description": "Echoes the request's `offset` (or its default)."
        },
        "has_more": {
          "type": "boolean",
          "description": "True when `offset + data.length < total` -- more pages remain."
        }
      },
      "description": "Pagination metadata for `data`.",
      "additionalProperties": true
    }
  },
  "description": "The metric time series. The source's `$schema` versioning URL is not returned.",
  "additionalProperties": true
}