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

> One row per token: address, symbol, decimals and launch.

The identity table behind every token figure. Every other table about tokens joins to it, and [Coverage](https://tokenterminal.com/docs/catalog/tokens.md) names the chains.

## Columns

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

  <tbody>
    <tr>
      <td>`token_id`</td>
      <td>`STRING`</td>
      <td>Token identifier: `{token_address}-{chain_id}`. The key every other token table joins on, and every row has a real address in it.</td>
    </tr>

    <tr>
      <td>`chain_id`</td>
      <td>`STRING`</td>
      <td>Chain the contract is deployed on.</td>
    </tr>

    <tr>
      <td>`token_address`</td>
      <td>`STRING`</td>
      <td>Contract address. Hex addresses are stored lowercase, and base58 addresses as the chain writes them.</td>
    </tr>

    <tr>
      <td>`symbol`</td>
      <td>`STRING`</td>
      <td>Symbol read from the contract, unverified. Any contract can call itself USDC, so read `token_address` to know what a token is, or the `asset_id` on `dimensions.asset_tokens` where somebody has already made that judgment.</td>
    </tr>

    <tr>
      <td>`name`</td>
      <td>`STRING`</td>
      <td>Name read from the contract, unverified.</td>
    </tr>

    <tr>
      <td>`decimals`</td>
      <td>`INT64`</td>
      <td>How many decimal places to move to turn a raw amount into a token amount.</td>
    </tr>

    <tr>
      <td>`created_at`</td>
      <td>`TIMESTAMP`</td>
      <td>When the token launched onchain.</td>
    </tr>
  </tbody>
</table>

## Sample queries

**By address**

`token_id` is the address and the chain joined by a dash, so one literal names one contract on one chain. `symbol` and `name` come off the contract, so read the address to know what the token is.

```sql theme={null}
select
    token_id,
    chain_id,
    token_address,
    symbol,
    name,
    decimals,
    created_at
from `dimensions.tokens`
where token_id = '0xdac17f958d2ee523a2206206994597c13d831ec7-ethereum'
```

**Its curated asset**

Whether a token is a tokenized asset, and which one, lives on `dimensions.asset_tokens`, one row per deployment, joined on the same `token_id`. The join keeps the tokens somebody has matched to a curated asset.

```sql theme={null}
select
    tokens.token_id,
    tokens.symbol,
    deployments.asset_id,
    deployments.bridged_status
from `dimensions.tokens` as tokens
join `dimensions.asset_tokens` as deployments
    using (token_id)
where tokens.token_id = '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48-ethereum'
```


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