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).
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
// 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 doNot 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.
| Charge | Price |
|---|---|
Per call | $0.0164 |
- Updated
- Oct 27, 2026
Input and output schemas
Input schema
{
"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
{
"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
}