> ## Documentation Index
> Fetch the complete documentation index at: https://tokenterminal.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> To query the Token Terminal data catalog, read https://tokenterminal.com/docs/catalog/agents-manual.md first. It is the whole catalog as one page: table naming grammar, key columns, partition and cluster rules, units, additivity, and the tables that are documented but not served yet.
> Never query a catalog table on a time bound alone. Also filter its cluster key, which you read from INFORMATION_SCHEMA.COLUMNS; an empty result means the object is a view, whose pruning contract is on its page. Compute is billed to the caller's own Google Cloud project.

# Metrics

> TVL, Fees, Revenue, Token incentives, Active users and sector-specific volume per app, with TVL, Fees, Revenue and volume split per chain.

An app is one deployed version of a protocol: `uniswap-v3` is an app of the Uniswap project. The same measures are carried per app and per app and chain, one row per day. Each measure is its own table, holding the level's identifier columns, `timestamp`, and one value column. Every measure is in USD unless it counts something, and a missing row means no figure for that day, not zero. The project levels above live at [Projects ▸ Metrics](/docs/catalog/projects/metrics).

## Tables

<Tabs>
  <Tab title="App">
    One row per `(app_id, timestamp)` in every `metrics_apps` table, since 2020-05. Each row also carries `project_id`. Details such as which market sectors the app belongs to live in [`dimensions.apps`](/docs/catalog/apps/registry).

    <table>
      <thead>
        <tr>
          <th width="330">Table</th>
          <th width="190">Value column</th>
          <th>What it holds</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td><code>metrics\_apps.tvl\_daily</code></td>
          <td><code>tvl</code></td>
          <td>Value locked in the app's contracts at day end, in USD.</td>
        </tr>

        <tr>
          <td><code>metrics\_apps.trading\_volume\_daily</code></td>
          <td><code>trading\_volume</code></td>
          <td>Cash value of the trades that took place on the app, in USD.</td>
        </tr>

        <tr>
          <td><code>metrics\_apps.active\_loans\_daily</code></td>
          <td><code>active\_loans</code></td>
          <td>Value of loans outstanding on the app at day end, in USD.</td>
        </tr>

        <tr>
          <td><code>metrics\_apps.assets\_staked\_daily</code></td>
          <td><code>assets\_staked</code></td>
          <td>Value staked on the app at day end, in USD.</td>
        </tr>

        <tr>
          <td><code>metrics\_apps.fees\_daily</code></td>
          <td><code>fees</code></td>
          <td>Fees paid by users of the app, in USD.</td>
        </tr>

        <tr>
          <td><code>metrics\_apps.fees\_supply\_side\_daily</code></td>
          <td><code>fees\_supply\_side</code></td>
          <td>The part of those fees the app passed on to the supply side, in USD.</td>
        </tr>

        <tr>
          <td><code>metrics\_apps.revenue\_daily</code></td>
          <td><code>revenue</code></td>
          <td>Fees the app kept, in USD.</td>
        </tr>

        <tr>
          <td><code>metrics\_apps.token\_incentives\_daily</code></td>
          <td><code>token\_incentives</code></td>
          <td>Value of the project's own token paid out as rewards through the app, in USD.</td>
        </tr>

        <tr>
          <td><code>metrics\_apps.outstanding\_supply\_daily</code></td>
          <td><code>outstanding\_supply</code></td>
          <td>Stablecoin supply outstanding today attributed to this app, in USD. Apps of stablecoin issuers only.</td>
        </tr>

        <tr>
          <td><code>metrics\_apps.user\_dau\_daily</code></td>
          <td><code>user\_dau</code></td>
          <td>Distinct addresses that used the app that day. A HyperLogLog estimate.</td>
        </tr>

        <tr>
          <td><code>metrics\_apps.user\_wau\_daily</code></td>
          <td><code>user\_wau</code></td>
          <td>Distinct addresses that used the app in the trailing 7 days. A HyperLogLog estimate.</td>
        </tr>

        <tr>
          <td><code>metrics\_apps.user\_mau\_daily</code></td>
          <td><code>user\_mau</code></td>
          <td>Distinct addresses that used the app in the trailing 30 days. A HyperLogLog estimate.</td>
        </tr>
      </tbody>
    </table>
  </Tab>

  <Tab title="App × chain">
    One row per `(app_id, chain_id, timestamp)` in every `metrics_app_chains` table, since 2020-05: the narrowest level published. Each row also carries `project_id`.

    <table>
      <thead>
        <tr>
          <th width="380">Table</th>
          <th width="190">Value column</th>
          <th>What it holds</th>
        </tr>
      </thead>

      <tbody>
        <tr>
          <td><code>metrics\_app\_chains.tvl\_daily</code></td>
          <td><code>tvl</code></td>
          <td>Value locked in the app's contracts on the chain at day end, in USD.</td>
        </tr>

        <tr>
          <td><code>metrics\_app\_chains.trading\_volume\_daily</code></td>
          <td><code>trading\_volume</code></td>
          <td>Cash value of the trades that took place on the app and chain, in USD.</td>
        </tr>

        <tr>
          <td><code>metrics\_app\_chains.active\_loans\_daily</code></td>
          <td><code>active\_loans</code></td>
          <td>Value of loans outstanding on the app and chain at day end, in USD.</td>
        </tr>

        <tr>
          <td><code>metrics\_app\_chains.fees\_daily</code></td>
          <td><code>fees</code></td>
          <td>Fees paid by users of the app on the chain, in USD.</td>
        </tr>

        <tr>
          <td><code>metrics\_app\_chains.fees\_supply\_side\_daily</code></td>
          <td><code>fees\_supply\_side</code></td>
          <td>The part of those fees the app passed on to the supply side on the chain, in USD.</td>
        </tr>

        <tr>
          <td><code>metrics\_app\_chains.revenue\_daily</code></td>
          <td><code>revenue</code></td>
          <td>Fees the app kept on the chain, in USD.</td>
        </tr>
      </tbody>
    </table>
  </Tab>
</Tabs>

## Sample queries

<Tabs>
  <Tab title="App">
    **Rank apps by fees over one week.**

    ```sql theme={null}
    select
        app_id,
        sum(fees) as fees
    from `metrics_apps.fees_daily`
    where timestamp >= timestamp('2026-08-01')
      and timestamp < timestamp('2026-08-08')
    group by app_id
    order by fees desc
    ```
  </Tab>

  <Tab title="App × chain">
    **Split one app's fees by chain over one week.** Dropping the chain filter and grouping by chain turns the narrowest table into a comparison across every chain the app runs on.

    ```sql theme={null}
    select
        chain_id,
        sum(fees) as fees
    from `metrics_app_chains.fees_daily`
    where app_id = 'uniswap-v3'
      and timestamp >= timestamp('2026-08-01')
      and timestamp < timestamp('2026-08-08')
    group by chain_id
    order by fees desc
    ```
  </Tab>

  <Tab title="Apps of one project">
    **Compare the apps one project runs by fees over one week.** The registry supplies the name; the daily table supplies the figure.

    ```sql theme={null}
    select
        apps.app_id,
        apps.name,
        sum(daily.fees) as fees
    from `metrics_apps.fees_daily` as daily
    join `dimensions.apps` as apps
        using (app_id)
    where daily.project_id = 'hyperliquid'
      and daily.timestamp >= timestamp('2026-08-01')
      and daily.timestamp < timestamp('2026-08-08')
    group by apps.app_id, apps.name
    order by fees desc
    ```
  </Tab>
</Tabs>

## Notes

Measures live in separate tables, so a query for two of them is a join on the level's identifier columns and `timestamp`. Use `full join` when both measures matter: a day can carry TVL and no fees, and an inner join would drop it.

`trading_volume`, `fees`, `revenue` and `token_incentives` measure a day's activity and add up freely: a weekly figure is seven daily rows added together, and an app figure is its chain rows added together. `tvl`, `active_loans` and `assets_staked` are values standing at day end, so a weekly figure for them is a choice of day rather than a sum. Counts of distinct addresses never add up at all: `user_dau` is counted at the app level, so a user active on two chains counts once.

An app figure rolls into its project's on [Projects ▸ Metrics](/docs/catalog/projects/metrics). [Metric definitions](/docs/catalog/metric-definitions) holds the rule for every measure as data you can query.
