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

# Registry

> Project names, market sectors, and who runs what.

The identity table behind every project figure. Every fact and metric joins to it, and [Coverage](https://tokenterminal.com/docs/catalog/projects.md) introduces the grain.

## Columns

<table>
  <thead>
    <tr>
      <th width="280">Column</th>
      <th width="130">Type</th>
      <th>Description</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>`project_id`</td>
      <td>`STRING`</td>
      <td>Identifier of the project. Every table that mentions a project joins on this.</td>
    </tr>

    <tr>
      <td>`slug`</td>
      <td>`STRING`</td>
      <td>The project's key in Token Terminal page URLs. It differs from `project_id` where the page URL is hyphenated (`redstone-chain` for `redstonechain`).</td>
    </tr>

    <tr>
      <td>`url`</td>
      <td>`STRING`</td>
      <td>The project's page on the Token Terminal Explorer.</td>
    </tr>

    <tr>
      <td>`name`</td>
      <td>`STRING`</td>
      <td>Display name.</td>
    </tr>

    <tr>
      <td>`symbol`</td>
      <td>`STRING`</td>
      <td>Ticker of the project's token, where one exists.</td>
    </tr>

    <tr>
      <td>`logo`</td>
      <td>`STRING`</td>
      <td>Public URL of the project logo, a PNG. Its `?logo_hash=` suffix changes whenever the image does. Null for a project whose image was never uploaded.</td>
    </tr>

    <tr>
      <td>`description`</td>
      <td>`STRUCT`</td>
      <td>The project copy: `what` the project is, `who` it serves and `how` it works.</td>
    </tr>

    <tr>
      <td>`links`</td>
      <td>`ARRAY<STRUCT>`</td>
      <td>The project's links as `type` and `url` pairs (website, x, docs, github). `type` is the label as written, so `twitter` and `x` both occur.</td>
    </tr>

    <tr>
      <td>`market_sectors`</td>
      <td>`ARRAY<STRING>`</td>
      <td>Every market sector the project belongs to, as tag ids, primary first. Unnesting it yields one row per sector.</td>
    </tr>

    <tr>
      <td>`primary_market_sector`</td>
      <td>`STRING`</td>
      <td>The market sector the project is listed under: the first element of `market_sectors`. One value per row.</td>
    </tr>

    <tr>
      <td>`listing_date`</td>
      <td>`TIMESTAMP`</td>
      <td>When the project was listed on Token Terminal.</td>
    </tr>

    <tr>
      <td>`archived_at`</td>
      <td>`TIMESTAMP`</td>
      <td>When Token Terminal stopped updating the project's metrics. Null while they are live.</td>
    </tr>

    <tr>
      <td>`archived_reason`</td>
      <td>`STRING`</td>
      <td>The notice shown with `archived_at`. Null while the project's metrics are live.</td>
    </tr>

    <tr>
      <td>`coingecko_id`</td>
      <td>`STRING`</td>
      <td>The project token's CoinGecko id.</td>
    </tr>

    <tr>
      <td>`coinmarketcap_id`</td>
      <td>`STRING`</td>
      <td>The project token's CoinMarketCap id.</td>
    </tr>
  </tbody>
</table>

## Sample queries

**Project identity**

`project_id` is the key every project table joins on, and `primary_market_sector` is the sector the project is listed under.

```sql theme={null}
select
    project_id,
    name,
    symbol,
    url,
    logo,
    primary_market_sector,
    listing_date
from `dimensions.projects`
where project_id = 'uniswap'
```

**Projects by sector**

`primary_market_sector` holds one value per project, and every project appears in exactly one group.

```sql theme={null}
select
    primary_market_sector,
    count(*) as projects
from `dimensions.projects`
group by primary_market_sector
order by projects desc
```

**Projects in a sector**

`market_sectors` answers membership, including projects listed under another sector. Aave is listed under `lending` and appears here as a stablecoin issuer.

```sql theme={null}
select
    project_id,
    name,
    primary_market_sector,
    market_sectors
from `dimensions.projects`
where 'stablecoin-issuers' in unnest(market_sectors)
order by project_id
```

**Projects with several apps**

A project with several apps has one row here and several in `dimensions.apps`, so the count comes from a join.

```sql theme={null}
select
    projects.project_id,
    projects.name,
    count(*) as apps
from `dimensions.projects` as projects
join `dimensions.apps` as apps
    using (project_id)
group by projects.project_id, projects.name
having count(*) > 1
order by apps desc, projects.project_id
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.